数组char的Java数组到Integer

时间:2012-10-18 19:47:08

标签: java arrays casting integer

我需要使用BufferedReader读取文件,在第二行我知道总会有2个整数:例如456 666;但是我不知道它们会有多少位数,所以在用BufferedReader提取行(类型String)之后,我通过该字符串的char读取char以获取数字并将它们添加到char数组中。当我有所有数字时,我用'\ 0'填充数组 例如:

array[0] = '4'
array[1] = '5'
array[2] = '6'
array[3] = '\0'
array[4] = '\0'
and so on

现在我希望将此数组转换为整数。 我试图首先将此数组转换为字符串,然后应用Integer.parseInt,但我不起作用。我不知道如何解决这个问题。有什么帮助吗?

8 个答案:

答案 0 :(得分:2)

如果您只读取该行并尝试将其解析为int,该怎么办?由于您不知道它是否是整数,因此使用异常来处理它:

String[] nextLine = reader.nextLine().split("\\s+") ;
Integer[] integer = new Integer[nextLine.length()] ;
try
{
  for(int i=0; i < nextLine.length();i++)  
   integer[i] = Integer.parseInt(nextLine[i]) ;
}
catch(NumberFormatException exception)
{
  exception.printStackTrace();
}  

答案 1 :(得分:2)

我强烈建议您使用Scanner。来自文档:

  

一个简单的文本扫描程序,可以使用正则表达式解析基本类型和字符串。   扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。然后可以使用各种下一种方法将得到的标记转换为不同类型的值。

Scanner将使用空格作为其默认分隔符,因此您应该能够为每个预期的整数标记简单地调用sc.nextInt()。有关用法示例,请参阅链接页面。

答案 2 :(得分:2)

你不能将数组转换为String ...但是如果你使用空格作为填充而不是\0,那么,那么就可以这样做:

int i = Integer.parseInt(String.valueOf(array).trim());

关于评论 - 很酷,trim()也会消除尾随0x0

public static void main(final String[] args) {
    char[] chars = new char[5];
    chars[2] = '9';
    System.out.printf("Original length: %d%n",String.valueOf(chars).length());
    System.out.printf("Trimmed length:  %d%n",String.valueOf(chars).trim().length());
    System.out.printf("Parsed:          %d%n",Integer.parseInt(String.valueOf(chars).trim()));
}

答案 3 :(得分:1)

假设array是您的char数组,这应该可以完成您的工作:

String str = "";
for (char c : array)
    str += c;

int result = Integer.parseInt(str);

答案 4 :(得分:1)

您最好使用Scanner

Scanner input = new Scanner(new File("myfile.txt"));
int first  = input.nextInt();
int second = input.nextInt();

答案 5 :(得分:0)

    // Assume an initial size of the array
    char array[] = new char[5];
    array[0] = '4';
    array[1] = '5';
    array[2] = '6';
    array[3] = '\0';
    array[4] = '\0';


    StringBuffer buffer = new StringBuffer();

    for (int i = 0; i < array.length && array[i] != '\0'; i++){
        buffer.append(array[i]);
    }

    int myInteger = Integer.parseInt(buffer.toString());

如果你想先创建一个String然后再解析为Integer,我建议你使用StringBuffer主要是因为Java中的字符串是不可变的(你不能更改它们中的特定字符)。如果使用StringBuffer,可以通过将toString方法应用于新创建的对象来解决此问题,然后使用Integer.parseInt。

答案 6 :(得分:0)

好的,如果您只是想将该数组转换为整数,那么您可以采用以下方式。

char array [] = new char [5];

    array[0] = '4';
    array[1] = '5';
    array[2] = '6';
    array[3] = '\0';
    array[4] = '\0';

    String newString = String.copyValueOf(array);
    newString = newString.replace("\0", "");

    int newInt = Integer.parseInt(newString);

    System.out.println(array);
    System.out.println(newInt);

上述代码已经过测试和验证。

答案 7 :(得分:0)

使用字符串构造函数public String(char[] letters)然后Integer.parseInt(...)