calculator()
已經運行後,我的程序暫停......除非輸入一個輸入來取消暫停程序。然後繼續運行並打印出來。但是,我之前輸入的用於取消暫停程序的輸入存儲在answer
中。請閱讀我在代碼中的評論以獲得更好的理解。如果你仍然不明白,隨時可以複製代碼,看看我在說什麼。爲什麼我的Java計算器在循環中暫停?
public static void main(String[] args) {
boolean repeat = true;
while (repeat){
calculator(); //-Program pauses after this has ran.
System.out.println("Do you wish to repeat(y/n)?"); // This does not appear unless I enter an input.
String answer = userInput.next(); //The input that I entered earlier to unpause the program gets stored into answer.
if (answer.equalsIgnoreCase("y")){
repeat = true;
} else { repeat = false;}}} //Program terminates here because the input that I used to unpause the program isn't "y".
全部下面的代碼:
package calculatorAttempt;
import java.util.Scanner;
class CalculatorV2 {
static Scanner userInput = new Scanner(System.in);
public static void calculator(){
System.out.print(":");
if (userInput.hasNextInt()){
int num1 = userInput.nextInt();
System.out.print(":");
String inString = userInput.next();
System.out.print(":");
int num2 = userInput.nextInt();
System.out.print("=");
if (inString.equals("+")){
System.out.print(num1+num2);}
if (inString.equals("-")){
System.out.print(num1-num2);}
if (inString.equals("*")||(inString.equalsIgnoreCase("x"))){
System.out.print(num1+num2);}
if (inString.equals("/")){
float intTofloat = (float)num1/num2;
System.out.println(intTofloat);} }//If Integer
if (userInput.hasNextFloat()){
float num1 = userInput.nextFloat();
System.out.print(":");
String inString = userInput.next();
System.out.print(":");
float num2 = userInput.nextFloat();
System.out.print("=");
if (inString.equals("+")){
System.out.print(num1+num2);}
if (inString.equals("-")){
System.out.print(num1-num2);}
if (inString.equals("*")||(inString.equalsIgnoreCase("x"))){
System.out.print(num1*num2);}
if (inString.equals("/")){
System.out.print(num1/num2);} }//If Float
}//Public Void Calculator
public static void main(String[] args) {
boolean repeat = true;
while (repeat){
calculator();
System.out.println("Do you wish to repeat(y/n)?");
String answer = userInput.next();
if (answer.equalsIgnoreCase("y")){
repeat = true;
} else { repeat = false;}}
}//Main
}//Class
我初學者,請多多包涵:^)。謝謝。
我正在調試你的代碼,還沒有完成它。我認爲這是與userInput.hasNextFloat() – rsb2097 2015-03-13 12:39:52
也:把這些 如果(x == a){} if(x == b){}選項變成:if(x == a){} else if (x == b){} 它將使您的代碼更易於調試。這可能是因爲您沒有正確計算使用的next或hasNext調用的行爲。 如果在計算器的末尾添加打印語句,是否在暫停之前顯示? – Stultuske 2015-03-13 12:41:58