从一系列的int中获得奇怪的结果

时间:2014-10-01 20:43:13

标签: java arrays eclipse

我想要完成的是: 用户输入三个字符串数组,例如

  

1,11,111; 2,22,222,2222; 3,33,333,3333,33333

我需要摆脱,并将数字放入三个数组中,但它存储了奇怪的结果。这是代码:

import java.util.Scanner;

public class signum {

    static int[] eja = new int[10000];
    static int[] tja = new int[10000];
    static int[] kja = new int[10000];

    private static String ej = null;
    private static String tj = null;
    private static String kj = null;

    private static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {

        System.out.println("Write a first array of integers");
        ej = sc.nextLine();

        ej = ej.replaceAll( "[^\\d]", " " );


        System.out.println("Write a second array of integers");
        tj = sc.nextLine();

        tj = tj.replaceAll( "[^\\d]", "" );



        System.out.println("Write the third array of integers");
        kj = sc.nextLine();

        kj = kj.replaceAll( "[^\\d]", " " );

        for(int i = 0; i < ej.length(); i++) {

            Character c = ej.charAt(i);

            if(c == '0' || c == '1' || c == '2' || c == '3' || c == '4' ||
                c == '5' || c == '6' || c == '7' || c == '8' || c == '9') {
                eja[i] = c;

                System.out.println(eja[i]);
            }
        }
    }
}

我知道它仍然只是尝试存储第一个数组,但重点是,如果我尝试存储类似1, 1, 1的内容,则存储49, 49, 49

此外,我仍然不知道如何使它存储> 9的数字,任何想法? 提前致谢!我真的没有想法..

2 个答案:

答案 0 :(得分:2)

您正在阅读字符,然后(隐式地)将它们存储在int[]中时将它们转换为整数。但问题是'1'的字符在转换为1时不会以int结尾,而是转换为其ASCII值{{1} }。

您想要读取整数,然后使用49将其转换为Integer.parseInt(String s)

使用int获取整数String bits[] = ej.split(",");表示的数组,然后在String循环中使用eja[i] = Integer.parseInt(bits[i].trim())获取每个for

(您需要int部分删除任何无关的空格。如果您确定每行的确切格式,可以使用.trim()拆分逗号后跟空格,但这意味着如果以后出现额外的空间或没有空间,它就会失败。)

答案 1 :(得分:-1)

您生成的数组的类型为Integer,但您将字符放在那里。这意味着您将以不同方式看到值。重新定义它们如下,它将起作用:

static char[] eja = new char[10000];
static char[] tja = new char[10000];
static char[] kja = new char[10000];