从整数

问题描述:

的阵列获取怪异的结果什么我试图完成的是: 用户输入串的三个阵列例如从整数

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

你为什么不[分割你的字符串(http://*.com/a/3481842/264775),然后用[整数解析各个元素。 parseInt函数(http://*.com/a/5585800/264775)? – thegrinner 2014-10-01 20:47:09

+0

你可以指定一个字符到一个int在Java中,但以正确的方式: http://*.com/a/17984993/1951298 – 2014-10-01 20:53:31

您正在阅读的字符,然后(隐式)将它们转换为整数,当您将它们存储在您的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(", ")以逗号分隔,后跟空格,但这意味着它会翻倒如果稍后出现一个空格或没有空格)

+0

现在我看到这里的交易是什么。非常感谢!我不知道为什么我没有想到这一点! 再次谢谢你! – Artur 2014-10-01 20:53:49

+0

当我试图将数字存储到数组时,它仍然会抛出异常。 线程“main”中的异常java.lang.NumberFormatException:用于输入字符串:“1 1 1” 我输入了“1,1,1” – Artur 2014-10-01 21:26:21

+0

@Artur取出您的'replaceAll'行!你不再需要它们。在你分割你的String之前,他们正在摆脱这些逗号。 – 2014-10-01 21:28:53

您的结果数组的类型是Integer,但您将字符放在那里。这意味着你会看到不同的值。他们重新定义如下,它会工作:

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