我必须从第一个String
为N的文件中读取字符串,然后将其转换为Integer
以进行循环for
从 0 到 N,每次从文件中读取另一个字符串,然后将读取的每一行转换为 float
,如下所示:
文件名称:test.txt
包含以下内容:
4
1.21
1.31
1.21
1.32
Java 代码
public class lpa2 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated constructor stub
String line;int n;
while((line = nextLine())!=null){
n = Integer.parseInt(line);
float v[] = new float[n];
for(int i = 0;i<n;i++){
String temp = readln();
v[i] = Float.parseFloat(temp);
}
for(float f:v)
System.out.println(f);
}
}
public static String readln() throws IOException{
BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
return bi.readLine();
}
}
当我像这样使用命令行时:
javac -nowarn lpa2.java
然后
java lpa2 < test.txt
使用文件作为输入,出现以下错误
java.lang.NumberFormatException: For input string: "{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at lpa2.main(lpa2.java:15)
如果我尝试使用 eclipse 来完成它,它会完美地工作......
我该如何解决这个问题?我使用我创建的 readln() 代替 Scanner,因为我需要一个更快的输入读取器,即使我尝试使用 Scanner,我也会遇到相同的错误...有什么方法可以解决这个问题吗?
谢谢...
最佳答案
您的文件“test.txt”保存为 rtf 文件 - 我猜您是从 Word 或类似的文字处理程序保存的?如果您在文本编辑器(例如记事本)中打开该文件,您会发现它不包含您期望的内容。
关于Java通过命令行从文件读取字符串作为 float 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028360/