我正在尝试从txt
文件中扫描一行整数,并将它们存储在ArrayList
中。我的问题很简单,我该怎么做?
这就是我所拥有的
public static void main(String[] args) throws FileNotFoundException {
ArrayList<Integer> coinTypes = new ArrayList<Integer>();
Integer i ;
File f = new File (args[0]);
Scanner input = new Scanner(f);
i = input.nextInt() ;
input.nextLine();
while(input.hasNextInt()) {
if(input.hasNextLine()) {
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);
}
}
为什么我没有工作?
INPUT :
java homework5 hwk5sample1.txt
输出:
Found change
Change: 143
[1]
Txt
档案:
// Coins available in the USA, given in cents. Change for $1.43?
1 5 10 25 50 100
143
WANT :
Change: 143
[1, 5, 10, 25, 50, 100]
答案 0 :(得分:0)
我会打开文件,读取第一行并将其拆分。
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
String[] numbers_= br.readLine().split(" ");
int[] numbers = new int[numbers_.length]; //I don't remember if this could be done.
for(int i = 0; i < numbers.length; i++) {
numbers[i] = Integer.parseInt( numbers_[i] );
}
}
finally {
br.close();
}
我觉得这样的事情应该起作用=)
答案 1 :(得分:0)
您的代码中存在不同的问题
if(input.hasNextLine()) {
coinTypes.add(i);
}
由于您在if
之前检查
while
主要问题是你没有读取循环内的输入,即
i = input.nextInt() ;
这应该在while循环中。
最后,您的change
不应该放在该循环中,因为更改是单个值。如果保留它,每次循环迭代时都会读取循环更改。但如果你把它放在循环之外,就会出现另一个问题。即,在阅读硬币到change
后,也会读取coinTypes
。
input.nextLine();
while (input.hasNextInt()) {
i = input.nextInt();
coinTypes.add(i);
}
int change = coinTypes.get(coinTypes.size()-1);
coinTypes.remove(coinTypes.size() - 1);
System.out.println("Change: " + change);
System.out.println(coinTypes);
循环coinTypes
之后将更改作为最后一项。我删除了最后一项,并使用这些行保留change
中的最后一项。
int change = coinTypes.get(coinTypes.size()-1);
coinTypes.remove(coinTypes.size() - 1);
ArrayList<Integer> coinTypes = new ArrayList<Integer>();
Integer i;
File f = new File(args[0]);
Scanner input = new Scanner(f);
input.nextLine();
int change;
String[] coinsline = input.nextLine().split("\\s");
for(String coin: coinsline) {
coinTypes.add(Integer.parseInt(coin));
}
change = Integer.parseInt(input.nextLine());
System.out.println("change: " + change);
System.out.println(coinTypes);