Java 扫描仪和字符串比较
我的文件中有以下文本:Java 扫描仪和字符串比较,java,string,Java,String,我的文件中有以下文本: 3 apple 4 1.00 chicken 1 3.25 cookie 38 0.25 avocado 1 4.00 blueberries 1 5.00 chicken 2 3.25 milk 9 4.50 tomato 27 0.50 chicken 2 3.25 我想列出每一个项目及其编号和价格,但如果我再次遇到相同的项目,我希望将其编号添加到现有编号中 我想出了第一部分,但我搞不懂第二部分有人有什么想法吗 public static v
3
apple 4 1.00
chicken 1 3.25
cookie 38 0.25
avocado 1 4.00
blueberries 1 5.00
chicken 2 3.25
milk 9 4.50
tomato 27 0.50
chicken 2 3.25
我想列出每一个项目及其编号和价格,但如果我再次遇到相同的项目,我希望将其编号添加到现有编号中
我想出了第一部分,但我搞不懂第二部分有人有什么想法吗
public static void main(String[] args) throws FileNotFoundException{
Scanner sc = new Scanner(new File("Groceries.txt"));
while(sc.hasNext()) {
String line=sc.nextLine();
Scanner ss = new Scanner(line);
if(ss.hasNextInt()) {
ss.next();
}
while(ss.hasNext()) {
String name=ss.next();
int number = readInt(ss);
double price = ss.nextDouble();
System.out.printf("The item is %s its number is %d and its price is %.1f\n",name,number,price);
}
}
}
public static int readInt(Scanner sc) {
while(!sc.hasNextInt()) {
sc.hasNext();
}
return sc.nextInt();
}
创建一个容器对象,如下所示:
public class Container
{
private String item;
private double cost;
...
}
使用HashMap
作为数据结构。每次遇到重复项时,更新其值
如果可能出现任意数量的重复,可以使用执行以下操作:
public class ValueContainer
{
private int count;
private double value;
}
并拥有一个HashMap
,并进行相应的更新。你在问题和评论中所说的似乎有些混淆。不管怎样,通过简单的替换,这个构造将把你带到你想去的地方
那么你会在屏幕上看到鸡4 3.25?一件商品有可能有两种不同的价格吗?我们应该平均重复的价格吗?是的,正好是鸡肉4.3.25!!我很好奇,如果我们假设一个项目不能被分成一半或小数,为什么要用double而不是Integer呢?使用Double的代价我理解,但不是HashMap。@DanielB OP谈到了平均值。