Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫描仪和字符串比较_Java_String - Fatal编程技术网

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
,并进行相应的更新。你在问题和评论中所说的似乎有些混淆。不管怎样,通过简单的替换,这个构造将把你带到你想去的地方

  • 创建一个类,描述物品的属性(名称、价格、数量、计数等)
  • 创建项目列表(是的,使用泛型..)//您还可以使用映射而不是列表
  • 现在,对于从文本文件中读取的每一行,首先使用split()获取项目名称
  • 检查项目是否已存在。如果是,将其取出,增加其计数并放回。如果否,则向列表中添加新项目

  • 快乐编码


  • 那么你会在屏幕上看到鸡4 3.25?一件商品有可能有两种不同的价格吗?我们应该平均重复的价格吗?是的,正好是鸡肉4.3.25!!我很好奇,如果我们假设一个项目不能被分成一半或小数,为什么要用double而不是Integer呢?使用Double的代价我理解,但不是HashMap。@DanielB OP谈到了平均值。