【问题标题】:Mismatch in I/O (JAVA) int/StringI/O (JAVA) int/String 不匹配
【发布时间】:2018-07-24 02:22:15
【问题描述】:

我必须编写一个程序,让用户在其中写入商品的价格,当用户按下 ctrld 时,程序将打印较低的价格(没有商品名称)。 该程序不打印任何想法或不匹配。我能做什么?

这是错误。如何修改代码以便可以读取字符串?

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at StampaMinimoParola.main(StampaMinimoParola.java:12)

这应该是输出:

输入

苹果 10 梨 20 葡萄 5

输出

5

代码如下:

import java.util.Scanner;
public class StampaMinimoParola {
    public static void main(String[] args) {
        Scanner s=new Scanner (System.in);
        String name="";
        int lower=Integer.MAX_VALUE;
        int price;

        while (s.hasNext()) { //start of the while loop
            name=s.nextLine(); //name of the article
            price=s.nextInt();//price of the article

            if (price<lower) {
                System.out.println(price);

            }
            //end of while cycle
        }

    }

}

【问题讨论】:

  • 输出是什么,你需要如何达到结果?
  • 或者没有输出或者出现:java.util.Scanner 的 java.util.Scanner.throwFor(Scanner.java:864) 的线程“main”java.util.InputMismatchException 异常。 next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at StampaMinimoParola.main(StampaMinimoParola.java:11)
  • 输入不匹配通常发生在您期望整数并将其作为字符串传递时
  • 在我必须输入一个字符串和一个整数之前...我应该怎么做?
  • 您的代码应该读取一个完整的行字符串,然后第二行应该读取为整数,另一件事是您的 ode 不会被执行,除非您在 while 循环之前提供一些输入跨度>

标签: java string if-statement while-loop int


【解决方案1】:

只需将 s.nextLine() 改为 s.next()

nextLine() 吃掉整条线,所以当你尝试 nextInt() 时,你已经在吃梨了

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多