我需要使用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,但我不起作用。我不知道如何解决这个问题。有什么帮助吗?
答案 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(...)
。