从整数
问题描述:
的阵列获取怪异的结果什么我试图完成的是: 用户输入串的三个阵列例如从整数
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
,有什么想法? 在此先感谢!我真的没有想法在这里..
答
您正在阅读的字符,然后(隐式)将它们转换为整数,当您将它们存储在您的int[]
。但问题是'1'
的字符在转换为int
时不会以1
结尾,而会转换为其ASCII值,即49
。
您想要读入一个整数,然后使用Integer.parseInt(String s)
将其转换为int
。
使用String bits[] = ej.split(",");
让自己整数的String
表示数组,然后用eja[i] = Integer.parseInt(bits[i].trim())
一个for
循环内得到每个int
。
(您需要.trim()
部分来删除任何多余的空格。如果您确定每行的确切格式,则可以使用ej.split(", ")
以逗号分隔,后跟空格,但这意味着它会翻倒如果稍后出现一个空格或没有空格)
答
您的结果数组的类型是Integer,但您将字符放在那里。这意味着你会看到不同的值。他们重新定义如下,它会工作:
static char[] eja = new char[10000];
static char[] tja = new char[10000];
static char[] kja = new char[10000];
你为什么不[分割你的字符串(http://*.com/a/3481842/264775),然后用[整数解析各个元素。 parseInt函数(http://*.com/a/5585800/264775)? – thegrinner 2014-10-01 20:47:09
你可以指定一个字符到一个int在Java中,但以正确的方式: http://*.com/a/17984993/1951298 – 2014-10-01 20:53:31