Java 从整数数组中获取奇怪的结果
我正在努力实现的是: 例如,用户输入三个字符串数组 1,11,111;2, 22, 222, 2222; 三三三三三三三三三三三三 我需要去掉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
,
,并将数字放入三个数组中,但它存储了奇怪的结果。代码如下:
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