Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 - Fatal编程技术网

Java 如何使用扫描仪计算一件物品的总成本?

Java 如何使用扫描仪计算一件物品的总成本?,java,Java,我需要编写一个程序,允许用户键入后面的项目名称 按空格,然后按项目的成本。用户必须连续输入项目 姓名和费用。当用户输入“停止”时,程序将终止。 程序必须确定输入的所有项目的总成本 样本输入: 焦炭12.50 馅饼11.65 芬达12.00 咖啡13.78 停止 样本输出: 总成本:49.93南非兰特 import java.util.Scanner; import javax.swing.JOptionPane; String details = ""; dou

我需要编写一个程序,允许用户键入后面的项目名称 按空格,然后按项目的成本。用户必须连续输入项目 姓名和费用。当用户输入“停止”时,程序将终止。 程序必须确定输入的所有项目的总成本

样本输入: 焦炭12.50 馅饼11.65 芬达12.00 咖啡13.78 停止

样本输出: 总成本:49.93南非兰特

    import java.util.Scanner;
    import javax.swing.JOptionPane;

String details = "";
        double total_cost = 0;

        while(!details.equals("STOP")){
            details = JOptionPane.showInputDialog("Enter item cost and name");
            Scanner sc = new Scanner(details);
            while(sc.hasNextDouble()){
                double price = sc.nextDouble();
                total_cost = total_cost + price;
                System.out.println("Total Cost: R" + total_cost); 

但是,我的代码只输出一个构建成功的“在此处输入代码”。我做错了什么?请原谅我的问题中缺少润色,我是堆栈溢出新手。

您必须将
STOP
与输入中的下一个标记匹配,而不是与整个输入匹配。此外,根据您的要求,输入应该在循环之外。按如下方式操作:

import java.util.Scanner;

import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        String details = JOptionPane.showInputDialog("Enter item cost and name");
        Scanner sc = new Scanner(details);
        double total_cost = 0;
        while (sc.hasNext() && !sc.next().equalsIgnoreCase("STOP")) {
            if (sc.hasNextDouble()) {
                double price = sc.nextDouble();
                total_cost = total_cost + price;
            }
        }
        System.out.println("Total Cost: R" + total_cost);
    }
}
import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        double total_cost = 0;
        String details;
        do {
            details = JOptionPane.showInputDialog("Enter item cost and name");
            String[] tokens = details.split("\\s+");
            if (tokens.length >= 2) {
                try {
                    double price = Double.parseDouble(tokens[1]);
                    total_cost = total_cost + price;
                } catch (IllegalArgumentException e) {
                    System.out.println("Wrong input");
                }
            }
        } while (!details.equalsIgnoreCase("STOP"));
        System.out.println("Total Cost: R" + total_cost);
    }
}
输出:

[更新]

如果您想处理单个条目,例如,
coke 12.50
,然后
pie 11.65
等等,您可以按如下操作:

import java.util.Scanner;

import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        String details = JOptionPane.showInputDialog("Enter item cost and name");
        Scanner sc = new Scanner(details);
        double total_cost = 0;
        while (sc.hasNext() && !sc.next().equalsIgnoreCase("STOP")) {
            if (sc.hasNextDouble()) {
                double price = sc.nextDouble();
                total_cost = total_cost + price;
            }
        }
        System.out.println("Total Cost: R" + total_cost);
    }
}
import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        double total_cost = 0;
        String details;
        do {
            details = JOptionPane.showInputDialog("Enter item cost and name");
            String[] tokens = details.split("\\s+");
            if (tokens.length >= 2) {
                try {
                    double price = Double.parseDouble(tokens[1]);
                    total_cost = total_cost + price;
                } catch (IllegalArgumentException e) {
                    System.out.println("Wrong input");
                }
            }
        } while (!details.equalsIgnoreCase("STOP"));
        System.out.println("Total Cost: R" + total_cost);
    }
}

您必须将
STOP
与输入的下一个标记匹配,而不是与整个输入匹配。此外,根据您的要求,输入应该在循环之外。按如下方式操作:

import java.util.Scanner;

import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        String details = JOptionPane.showInputDialog("Enter item cost and name");
        Scanner sc = new Scanner(details);
        double total_cost = 0;
        while (sc.hasNext() && !sc.next().equalsIgnoreCase("STOP")) {
            if (sc.hasNextDouble()) {
                double price = sc.nextDouble();
                total_cost = total_cost + price;
            }
        }
        System.out.println("Total Cost: R" + total_cost);
    }
}
import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        double total_cost = 0;
        String details;
        do {
            details = JOptionPane.showInputDialog("Enter item cost and name");
            String[] tokens = details.split("\\s+");
            if (tokens.length >= 2) {
                try {
                    double price = Double.parseDouble(tokens[1]);
                    total_cost = total_cost + price;
                } catch (IllegalArgumentException e) {
                    System.out.println("Wrong input");
                }
            }
        } while (!details.equalsIgnoreCase("STOP"));
        System.out.println("Total Cost: R" + total_cost);
    }
}
输出:

[更新]

如果您想处理单个条目,例如,
coke 12.50
,然后
pie 11.65
等等,您可以按如下操作:

import java.util.Scanner;

import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        String details = JOptionPane.showInputDialog("Enter item cost and name");
        Scanner sc = new Scanner(details);
        double total_cost = 0;
        while (sc.hasNext() && !sc.next().equalsIgnoreCase("STOP")) {
            if (sc.hasNextDouble()) {
                double price = sc.nextDouble();
                total_cost = total_cost + price;
            }
        }
        System.out.println("Total Cost: R" + total_cost);
    }
}
import javax.swing.JOptionPane;

public class Main {
    public static void main(String[] args) {
        double total_cost = 0;
        String details;
        do {
            details = JOptionPane.showInputDialog("Enter item cost and name");
            String[] tokens = details.split("\\s+");
            if (tokens.length >= 2) {
                try {
                    double price = Double.parseDouble(tokens[1]);
                    total_cost = total_cost + price;
                } catch (IllegalArgumentException e) {
                    System.out.println("Wrong input");
                }
            }
        } while (!details.equalsIgnoreCase("STOP"));
        System.out.println("Total Cost: R" + total_cost);
    }
}

请编辑您的问题以添加您的代码当前的功能以及为什么这不是所需的行为“不工作”是对您的问题的糟糕描述,请解释为什么它不工作。它是否崩溃,或者您是否得到了错误的结果,或者…?请编辑您的问题以添加您的代码当前的功能以及为什么这不是所需的行为“不工作”是对您的问题的糟糕描述,请解释为什么它不工作。它是崩溃了还是你得到了错误的结果还是…?非常感谢!没有办法编辑它,每个项目和成本都会显示一个单独的JOptionPane吗?@GenericJudd-非常欢迎。我已经添加了一个更新来实现这一点。如果有任何进一步的疑问/问题,请随时发表评论。非常感谢!没有办法编辑它,每个项目和成本都会显示一个单独的JOptionPane吗?@GenericJudd-非常欢迎。我已经添加了一个更新来实现这一点。如有任何进一步的疑问/问题,请随时发表评论。