好的,所以我想读一下我的整数以及文件中的字符串。到目前为止,我有这个代码,我不断收到错误。我在我的文本文件中有这个:灰色:30 黑色:40 我正在尝试读取字符串以及整数,因为我想将整数设置为字符串值(颜色)
while (strike!=3){
Scanner name1 = new Scanner(System.in);
System.out.println("Enter A color");
String nameTaken = name1.next();
while(filechecker.hasNextLine()){
list.add(filechecker.nextLine());
}
String line =filechecker.nextLine();
String[] details = line.split(":");//checks for the integer next to the color
if((list.contains(nameTaken))&&(filechecker.hasNextInt())){
int points = Integer.parseInt(details[2]);
System.out.println("The Answer Exists!! You Got " +details[2]);
答案 0 :(得分:2)
您没有说明您收到的错误,但我可以从以下代码中看到,您可能会收到NullPointerException
或类似内容。
修改:似乎您获得了NoSuchElementException
,因为还没有线路可供阅读。
这段代码循环遍历filechecker
并将所有行读入列表,直到不再有行为止。紧跟在while块之后的行尝试从中读取另一行,因为您已经全部读取它(它将返回null
),它将找不到它。您尝试split
的行将因此而抛出异常。
while(filechecker.hasNextLine()){
list.add(filechecker.nextLine());
}
String line =filechecker.nextLine(); // <-- this line is throwing it. Don't use it here, use your list or do your work in the while loop instead.
String[] details = line.split(":");//checks for the integer next to the color
不要在while {循环播放后filechecker
上操作,而是使用您的列表。或者更好的是,完成所有工作 in while循环。
答案 1 :(得分:0)
使用HashMap存储数据可能更容易:
HashMap<String, Integer> colorData = new HashMap<String, Integer>();
然后,您可以使用ObjectOutputStream和ObjectInputStream来编写和读取文件:
void write(String fileName) {
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(colorData);
}
void read(String fileName) {
ObjectInputStream in = null;
try {
fileIn = new FileInputStream(fileName);
in = new ObjectInputStream(fileIn);
colorData = (HashMap<String, Integer>) in.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(objectinputstream != null)
objectinputstream .close();
}
}