输入"Q"时如何使Java程序退出,问题是默认输入变量为双精度



如何使我的程序在输入"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;
}
}

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"时,我该如何使它停止程序而不会出错?

两个简单的选项:

  • 您捕获该异常并定义"任何不是数字的内容都意味着结束程序"
  • 而不是调用 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") {
...