我正在编写一个Java货币兑换计划,我在其中为用户编制3种外币,以便从美元兑换成外币。当用户输入“000”
时,我想要突破while
import java.lang.StringBuffer;
import java.io.IOException;
class Project6_5
{
public static void main(String args[])
{
int usa, amount, stop;
System.out.println("This is a Currencies Exchange program");
System.out.println("From US Dollar to Foreign Currency"); //Explaining to user
stop = 0;
while(true/*stop!=999*/)
{
try
{
System.out.print("What is your amount of US dollars?");
System.out.println(" 000 to end Program");
usa = Integer.parseInt(GCS());
System.out.println("What currency would you prefer?");
System.out.println("Avaliable currencies are:");
System.out.println("1 for Japanese Yen, 2 for Taiwanese Dollar, 3 for Euro");
amount = Integer.parseInt(GCS());
if( amount == 1 )
{
System.out.println("Exchange rate");
System.out.println("80.75 Yen for 1 Dollar");
System.out.println(" ");
System.out.println("Your Yen is "+ usa*80.75);
System.out.println("________________________________________");
}
if( amount == 2 )
{
System.out.println("Exchange rate");
System.out.println("30.125 NTD for 1 Dollar");
System.out.println(" ");
System.out.println("Your NTD is "+ usa*30.125);
System.out.println("________________________________________");
}
if( amount == 3 )
{
System.out.println("Exchange rate");
System.out.println("1.4201 Euro for 1 Dollar");
System.out.println(" ");
System.out.println("Your Euro is "+ usa*1.4201);
System.out.println("________________________________________");
}
if(usa==000)
{
System.out.println("End Program");
return;
}
}
catch(NumberFormatException NFE) //catch if integer's not number
{
System.err.println("ERROR");
System.err.println("Type in Integer only");
}
catch(Exception E) //catch Genaral Error
{
System.err.println("ERROR");
}
}
}//end of Main
public static String GCS() //GetConsoleString User-Input
{
int noMoreInput = -1;
char enterKeyHit = '\n';
int InputChar;
StringBuffer InputBuffer = new StringBuffer(100);
try
{
InputChar = System.in.read();
while(InputChar != noMoreInput)
{
if((char)InputChar != enterKeyHit)
{
InputBuffer.append((char) InputChar);
}
else
{
InputBuffer.setLength(InputBuffer.length()-1);
break;
}
InputChar = System.in.read();
}
}//close Try(21)
catch(IOException IOX)
{
System.err.println(IOX);
}
return InputBuffer.toString();
}//end of GCS
}
答案 0 :(得分:1)
每当你看到自己编写相同的代码块时,差异很小,你应该将该块重构为一个方法。
从你的代码:
if( amount == 1 )
{
System.out.println("Exchange rate");
System.out.println("80.75 Yen for 1 Dollar");
System.out.println(" ");
System.out.println("Your Yen is "+ usa*80.75);
System.out.println("________________________________________");
}
if( amount == 2 )
{
//all the same as above except for 30.125 instead of 80.75
//and NTD instead of Yen
}
//...
该方法应该接受更改的值,然后重复您的语句,输出变量而不是硬编码的数字和货币类型。
请注意,您的程序目前不符合您的规范,因为您在检查之前将用户的输入解析为Integer
,因此用户输入的任何字符串Integer.parseInt
评估为0
(而不仅仅是“000”)将导致您的程序返回。
答案 1 :(得分:1)
移动这段代码:
if(usa==000)
{
System.out.println("End Program");
return;
}
到下面:
usa = Integer.parseInt(GCS());
因为您想要检查用户是否在返回后直接输入了000
。
我建议将return
替换为:
System.exit(0);
这显示了您退出程序的明确意图,这是正常终止。