输入“ Q”时如何退出Java程序,问题是默认输入变量为double

时间:2018-09-28 15:48:10

标签: java

当输入“ Q”时如何退出程序? 我目前正在学校中将货币转换器从USD转换为欧元,并且已经很长一段时间都停留在这部分上。问题是我所有的键盘输入变量都是double类型,每当输入“ 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;
    }
}

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

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

    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.");
        double usd = kbReader.nextDouble();
        System.out.println("Your converted value is € " + ER.USDToEuro(usd)+ ".");
    }
    while(1 == 1);
}
}

转换器本身可以正常工作,但是再次,我所卡住的部分正在使它工作,因此当输入“ Q”时,它将停止程序。我可能怎么做,所以当输入“ Q”时,它会在没有错误的情况下停止程序吗?

4 个答案:

答案 0 :(得分:3)

两个简单的选项:

  • 您捕获了该异常并定义了“不是数字的任何内容都是为了结束程序”
  • 代替调用nextDouble()而是将用户输入作为字符串检索

当您有一个字符串时,可以将其与其他字符串进行比较,然后再尝试将其转换为双精度值!

答案 1 :(得分:3)

您应该使用:

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

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

答案 2 :(得分:1)

将输入读取为字符串。

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"));
    }
}

答案 3 :(得分:0)

对于

Map(c, total_delta_final, total_TI_final)

通过这种方式,您可以只接受Q作为上限。我知道当我被教导时,我的老师更喜欢这样的代码。或者您可以尝试

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

  System.exit(0);