如何使Java程序在“退出”时退出;Q";输入,issue为默认输入变量,为double

如何使Java程序在“退出”时退出;Q";输入,issue为默认输入变量,为double,java,Java,当输入“Q”时,如何使程序退出? 我目前正在学校编写一个从美元到欧元的货币转换程序,并且已经在这一部分停留了很长时间。问题是,我所有的键盘输入变量都是双重类型的,每当输入“Q”或类似的东西时都会导致错误。到目前为止,我的课程是这样的 import java.io.*; public class CurrencyConverter { double exchRate; double euro; public CurrencyConverter(double exch

当输入“Q”时,如何使程序退出? 我目前正在学校编写一个从美元到欧元的货币转换程序,并且已经在这一部分停留了很长时间。问题是,我所有的键盘输入变量都是双重类型的,每当输入“Q”或类似的东西时都会导致错误。到目前为止,我的课程是这样的

import java.io.*;

public class CurrencyConverter 
{

    double exchRate;
    double euro;

    public CurrencyConverter(double exchRate){
        this.exchRate = exchRate;
    }

    public double USDToEuro(double usd) {
        double euro = 0;
        euro = usd * exchRate;
        return euro;
    }
}

转换器本身工作正常,但同样,当输入“Q”时,我卡在上面的部分使其停止程序。当输入“Q”时,它会停止程序而不会出错,我该怎么做呢?

两个简单的选项:

  • 您捕获该异常并定义“任何非数字的内容都意味着结束程序”
  • 不调用nextDouble(),而是将用户输入检索为字符串
当您有一个字符串时,您可以将其与其他字符串进行比较,然后再尝试将其转换为双精度值

您应该使用:

...
String input = kbReader.readLine().trim();
if( input.equals("Q")){
   //quit
   System.exit(0);
}
// otherwise continue converting
Double number = Double.parseDouble(input);
...

通过这种方式,您接受了一种更通用的字符串类型的输入,您可以将其用于两个目的:在输入
Q
的情况下离开程序;如果输入了数字,则继续转换。

将输入读取为字符串

import java.io.*;
import java.util.*;

public class Converter
{
    public static void main(String args[])
    {
        Scanner kbReader = new Scanner(System.in);

        String input = "";
        System.out.println("Please enter the value of USD in Euros.");
        double exchRate = kbReader.nextDouble();
        CurrencyConverter ER = new CurrencyConverter(exchRate);
        do
        {
            System.out.println("Please enter a value of USD to be converted.");
            input = kbReader.nextLine();
            try {
                double usd = Double.parseDouble(input);
                System.out.println("Your converted value is € " + ER.USDToEuro(usd)+ ".");
            } catch (NumberFormatException e) {
                System.out.println("That isn't a valid number.");
            }
        }
        while(!input.equals("Q"));
    }
}
为了

 if ( input = "Q" || input = "q"){
  .....  

  System.exit(0);
通过这种方式,您可以只接受Q是否为大写。我知道,当我被教授这一点时,我的老师更喜欢这样的代码。或者你可以试试

if ( input.toUpperCase() = "Q") {

...

通过调用
System.exit()
退出应用程序是危险的。例如,它将绕过任何finally子句。如果您在应用服务器中运行它,它将退出应用服务器。最好从main返回退出。
input.equalsIgnoreCase(“q”)
也会这样做。input.toLowerCase也会导致java像这样
if ( input.toUpperCase() = "Q") {

...