Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从整数数组中获取奇怪的结果_Java_Arrays_Eclipse - Fatal编程技术网

Java 从整数数组中获取奇怪的结果

Java 从整数数组中获取奇怪的结果,java,arrays,eclipse,Java,Arrays,Eclipse,我正在努力实现的是: 例如,用户输入三个字符串数组 1,11,111;2, 22, 222, 2222; 三三三三三三三三三三三三 我需要去掉,,并将数字放入三个数组中,但它存储了奇怪的结果。代码如下: import java.util.Scanner; public class signum { static int[] eja = new int[10000]; static int[] tja = new int[10000]; static int[] kja

我正在努力实现的是: 例如,用户输入三个字符串数组

1,11,111;2, 22, 222, 2222; 三三三三三三三三三三三三

我需要去掉
,并将数字放入三个数组中,但它存储了奇怪的结果。代码如下:

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]);
            }
        }
    }
}
import java.util.Scanner;
公共类标志{
静态整数[]eja=新整数[10000];
静态整数[]tja=新整数[10000];
静态整数[]kja=新整数[10000];
私有静态字符串ej=null;
私有静态字符串tj=null;
私有静态字符串kj=null;
专用静态扫描仪sc=新扫描仪(System.in);
公共静态void main(字符串[]args){
System.out.println(“写入第一个整数数组”);
ej=sc.nextLine();
ej=ej.replaceAll(“[^\\d]”,“”);
System.out.println(“写入第二个整数数组”);
tj=sc.nextLine();
tj=tj.replaceAll(“[^\\d]”,“”);
System.out.println(“写入第三个整数数组”);
kj=sc.nextLine();
kj=kj.replaceAll(“[^\\d]”,“”);
对于(int i=0;i
我知道它仍然只尝试存储第一个数组,但关键是如果我尝试存储类似
1,1,1
的内容,它会存储
49,49,49

另外,我仍然不知道如何让它存储
>9
,有什么想法吗?
提前谢谢!我在这里真的没有主意了。

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

您希望读取整数,然后使用
Integer.parseInt(字符串s)
将其转换为
int

使用
字符串位[]=ej.split(“,”)
获取一个整数表示的
字符串数组,然后在
for
循环中使用
eja[i]=Integer.parseInt(位[i].trim())
获取每个
int


(您需要使用
.trim()
部分来删除任何多余的空格。如果您确定每行的确切格式,您可以使用
ej.split(“,”)
在逗号后加空格进行拆分,但这意味着如果以后有一行出现额外空格或没有空格,则该部分将失效。)

生成的数组是整数类型,但要在其中输入字符。这意味着您将看到不同的值。将它们重新定义为以下内容,它将起作用:

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

为什么不在Java中指定一个字符给一个int,但是要用一种合适的方式:现在我明白了。非常感谢!我不知道为什么我没有想到这一点!再次感谢你!当我试图将数字存储到数组中时,它仍然向我抛出异常。线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“1”我输入了“1,1,1”@Artur取出您的
replaceAll
行!你不再需要它们了。在你拆分
字符串之前,他们已经去掉了逗号。好了,我做到了,现在我得到了BoundsException的数组。但是它打印出所有的ej[i]“很好”,然后抛出异常。@Artur很难在没有看到新代码的情况下找出错误,但是您的
for
循环可能不太正确。您应该使用
for(int i=0;i