首页 > 解决方案 > 新手使用 Scanner 对象进行拼写检查

问题描述

Scanner kb = new Scanner(System.in);
String plt;
String msr;
double wgh;

 System.out.println("'Welcome to interplanetary weight calculator.");

 Thread.sleep(2500);


 System.out.println("");
 System.out.println("Please choose one planet for calculation:");
 System.out.println("1.Venus   2.Mars    3.Jupiter");
 System.out.println("4.Saturn  5.Uranus  6.Neptune");
 System.out.print(">");

do { 
 while (!kb.hasNextLine()) {
        System.out.println("That's not a planet!");
        kb.nextLine(); // this is important!
    }
    plt = kb.nextLine();
} while (plt.equalsIgnoreCase("Venus"));
System.out.println("Thank you!Now will do calculation on " + plt); }}

我想在行星之间做一个重量计算器,我也想要一个拼写检查器,但是当我写东西时,它只会打印出“谢谢!现在,将在……上进行计算”。

它也打印出整数。我找不到我在哪里做错了。

标签: javaspell-checkingspelling

解决方案


本质上,发生的事情是您的循环将运行一次,您可以输入一些内容,然后它将退出循环,因为除了“venus”(大小写的任意组合)之外的任何内容都将退出循环。这就是为什么它也会打印数字等。

解决方案可能是添加一个 ! 到条件的开始。这将反转条件,这意味着现在只有输入“venus”会导致循环退出,这将导致程序继续运行循环以下的所有内容。但是,仍然不会出现任何类型的错误消息。拼写检查和错误处理将以不同的方式实现。


推荐阅读