У меня небольшая проблема/ошибка в моей программе, которая не будет сканировать в содержимом правильно. Я верю, что использую правильную команду? ex: java homework5 hwk5sample1.txt
Почему никакое содержимое не сканируется и не хранится в моем ArrayList
?
import java.io.*;
import java.util.*;
import java.lang.*;
public class homework5 {
public static int penny = 1;
public static int nickle = 5;
public static int dime = 10;
public static int quarter = 25;
public static int halfDollar = 50;
public static int dollar = 100;
public static int change;
public static void main(String[] args)
throws FileNotFoundException {
ArrayList<Integer> coinTypes = new ArrayList<Integer>();
File f = new File (args[0]);
Scanner input = new Scanner(f);
while (input.hasNextInt()) {
System.out.println("Found next int"); //used for debugging
int i = input.nextInt();
coinTypes.add(i);
if (input.hasNextLine()) {
change = input.nextInt();
System.out.println("Found change"); //used for debugging
System.out.println("Change: " + change);
}
}
System.out.println(coinTypes); //used for debugging
}
}
ПРИМЕЧАНИЕ. Дополнительные System.out.println()
используются, чтобы показать мне на выходе, что сканер нашел то, что указано, очевидно, ничего не появляется. Что не так?
output: []
вот мой файл hwk5sample1.txt
который я использую в команде
// Coins available in the USA, given in cents. Change for $1.43?
1 5 10 25 50 100
143
всякая помощь приветствуется! спасибо
РЕДАКТИРОВАТЬ В моем описании назначения, он должен уметь игнорировать подобные комментарии и все еще работать, поскольку тестер будет использовать похожие файлы
Добавьте input.nextLine()
чтобы прочитать эту строку комментариев
input.nextLine();
while (input.hasNextInt()) {
System.out.println("Found next int"); // used for debugging
int i = input.nextInt();
coinTypes.add(i);
if (input.hasNextLine()) {
change = input.nextInt();
System.out.println("Found change"); // used for debugging
System.out.println("Change: " + change);
}
}
Found next int
Found change
Change: 5
Found next int
Found change
Change: 25
Found next int
Found change
Change: 100
Found next int
[1, 10, 50, 143]
hasNextInt()
проверяет, являются ли следующие символы в файле / вводе целыми числами. «//» не является целым числом, поэтомуhasNextInt()
возвращаетfalse