我想要完成的是: 用户输入三个字符串数组,例如
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
的数字,任何想法?
提前致谢!我真的没有想法..
答案 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];