所以我有一个看起来像这样的文本文件
4
10 orange
20 grape
100 Pencil Cases
4 Card
第一行是对象的数量。下一行是对象的价格和名称。我必须找到价格最低的对象,并只返回对象的名称。 (所以,在这种情况下" Card")
我将txt放入Arraylist并拆分它以便我只能得到数字。我试图将数字放入一个新的整数数组来比较它们。这是我尝试过的代码。
public class Assignment {
public static void main(String[] args) {
try {
BufferedReader rd = new BufferedReader(new FileReader("C:\\Users\\USER\\Documents\\input.txt"));
List<String> lines = new ArrayList<String>();
String line = null;
while ((line = rd.readLine()) != null)
{
lines.add(line);
}
rd.close();
for (int i =0; i<lines.size(); i++) {
String[] items = lines.get(i).split(" ", 2);
for (String s: items) {
System.out.println(s);
}
int[] array2 = new int[items.length];
int k =0;
for (int n= 2; n< items.length; n=n+2) {
array2[k] = Integer.parseInt(items[n]);
for (Integer l: array2) {
System.out.println(l); }
}
}
}
catch (Exception e) {
System.out.println("Error");
}
}
}
我认为array2部分有问题。有人可以暗示我应该如何解决这个问题? stackoverflow和Java的新手,所以如果我的问题(或我的语法也有问题),我很抱歉!
答案 0 :(得分:3)
我试图将数字放入一个新的整数数组来比较它们
这是你如何做到的。
int[] array2 = new int[lines.size() - 1];
int k = 0;
for (int i = 1; i < lines.size(); i++) { //Start at row 1
String[] items = lines.get(i).split(" ", 2);
array2[k++] = Integer.parseInt(items[0]); //The first element is the price
}
System.out.println(Arrays.toString(array2)); //[10, 20, 100, 4]
但是,有了这个,您无法获得具有最高价格的商品名称。因此,您需要将名称和价格存储在一起,我将把它留给您。