多个字的字符串输入会导致异常错误

时间:2014-08-12 04:12:38

标签: java output user-input

我正在输入以下内容:

  • 12.46
  • music cd

出于某种原因,出现了成本提示,下一个输出行出现在同一行。有人可以帮助我发现我的错误吗?

public class SalesTax {

    public static void main(String[] args) {
        // Input items for shopping cart
        HashMap<String, String> cart = new HashMap<String, String>();

        // Create a Scanner
        Scanner input = new Scanner(System.in);

        // variables
        char done;
        boolean goods;
        double tax;

        // Pick items for list.
        do {       
            System.out.print("Please enter an item.");
            String item = input.next();

            System.out.print("Please enter the price for "+ item + ": ");
            String price = input.next();      

            if (item.contains("book")) {
                goods = false;  
            } else if(item.contains("chocolate")) {
                goods = false;
            } else if(item.contains("pill")) {
                goods = false;
            }

            cart.put(item, price);
            System.out.print("Would you like to continue to add items? (Type Y) for Yes and (Type N) for No.");
            done = input.next().charAt(0);

        } while(Character.toUpperCase(done) == 'Y');
    }
}

4 个答案:

答案 0 :(得分:2)

<强>问题:

String item = input.next();

当您输入music cd时,item会消耗音乐,而price会消耗 cd ,因此会跳过它

<强>溶液

你需要调用input.nextLine();来使用整行字符串

答案 1 :(得分:0)

您正在使用System.out.print()而不是使用System.out.println();

print()只打印单词并保持在同一行。

println()将打印整行,光标将转到第二行。

当你把它写成

时,不要在阅读时使用这些空格

input.next();

  

next()和hasNext()方法及其原始类型的伴随方法(例如nextInt()和hasNextInt())首先跳过与分隔符模式匹配的任何输入,然后尝试返回下一个标记。 hasNext和next方法都可能阻止等待进一步输入。 hasNext方法块是否与其关联的下一个方法是否会阻塞无关。

修改 只需将声明更改为此。

 Scanner s = new Scanner(input).useDelimiter("\n");

它会将分隔符更改为新行并读取完整的行。

答案 2 :(得分:0)

默认情况下,next()只是输入到空格,因此您必须使用nextLine()代替,这将在整个输入行中读取到回车符。

答案 3 :(得分:0)

使用input.nextLine()从键盘读取整行。表示用户键入的内容,直到用户按下回车键。

我不明白的一件事是,在你的代码中使用它有什么用?

        if(item.contains("book"))
        {
            goods = false;  
        }
        else if(item.contains("chocolate"))
        {
            goods = false;
        }
        else if(item.contains("pill"))
        {
            goods = false;
        }

??? 你能解释一下吗?

谢谢,