2014-11-08 2 views
-4

Итак, все работает отлично для этого калькулятора, кроме того, для askCalcChoice1. Поскольку askCalcChoice1 является строкой, я называю ее неправильной (очевидно). Ошибка говорит, что он не может преобразовать строку в int, а также преобразовать int в boolean. Однако, когда я делаю inputOperation как строку, он прерывает другие 2 вызова ниже askCalcChoice1. (он разбивает displayRedults и askTwoValues, потому что это не строки). Я не знаю, как форматировать askCalcChoice, чтобы вызвать этот метод, который написан в другом классе, не нарушая ничего. askCalcChoice записывается как строка, которую я вставил под кодом oopCalculator. Есть ли способ, и может кто-нибудь, пожалуйста, покажите мне, как написать эту часть этого кода в oopCalculator?Ошибка калькулятора консоли java

int inputOperation; // user to choose the function 
    askCalcChoice1 myAskCalcChoice1 = new askCalcChoice1(); 

    //menu becomes a complete string below 
    String menu = "Welcome to Hilda Wu's Calculator\t\t" 
      + "\n1. Addition\n" 
      + "2. Subtraction\n" 
      + "3. Multiplication\n" 
      + "4. Division\n" 
      + "5. Exit\n\n"; 
    calculatorCommands.pickNewSymbol(menu); //complete menu will be picked up as a string and display 
    calculatorCommands.putDownSymbol(); 

    while (inputOperation = myAskCalcChoice1.calcChoice()) { //this will call for myAskCalcChoice1 class 
     calculatorCommands.pickNewSymbol("\n"); //pick up the class 
     calculatorCommands.putDownSymbol(); //display the class 

     askTwoValues myAskTwoValues = new askTwoValues();   
     float[] myFloats = myAskTwoValues.inputFloats(inputOperation); 


     displayResults myDisplayResults = new displayResults(); 
     float result = myDisplayResults.showResults(inputOperation, myFloats); 

     String strFormat = "The answer is: " + result + "\n\n"; //print out The answer is as a string 
     calculatorCommands.pickNewSymbol(strFormat); //pick up string from above 
     calculatorCommands.putDownSymbol(); //display string 
     calculatorCommands.pickNewSymbol(menu); // pick up menu from the beginning of code, loop to calculator menu 
     calculatorCommands.putDownSymbol(); //display menu as loop 
    } 
    calculatorCommands.pickNewSymbol("\nThank you for using Hilda Wu's Calculator\n"); //when user choose to exit calculator 
    calculatorCommands.putDownSymbol(); 
} 






String calcChoice() { 
    String input; 
    do { //do loop will continue to run until user enters correct response 
     System.out.print("Please enter a number between 1 and 5, A for Addition, S for Subtraction, M for Multiplication, or D for Division, or X for Exit: "); 
     try { 
      input = readInput.nextLine(); //user will enter a response 
      if (input.equals("A") || input.equals("S") || input.equals("M") || input.equals("D") || input.equals("X")) { 
       System.out.println("Thank you"); 
       break; //user entered a character of A, S, M, or D 
      } else if (Integer.parseInt(input) >= 1 && Integer.parseInt(input) <= 5) { 
       System.out.println("Thank you"); 
       break; //user entered a number between 1 and 5 
      } else { 
       System.out.println("Sorry, you have entered an invalid choice, please try again."); 
      } 
      continue; 
     } 
     catch (final NumberFormatException e) { 
      System.out.println("You have entered an invalid choice. Try again."); 
      continue; // loop will continue until correct answer is found 
     } 
    } while (true); 
    return input; 
} 

}

+0

Я пропустил вопрос. – csmckelvey

+0

Где проблема, и где вы застряли и вам нужна помощь? – mattias

+0

Проблема в том, что я получаю неопределенную ошибку здесь в основной программе калькулятора. У меня возникли проблемы с вызовом метода switch из нижнего фрагмента кода. Не знаю, как отформатировать оператор, чтобы заставить его вызвать метод switch.askCalcChoice1 myAskCalcChoice1 = new askCalcChoice1(); while ((inputOperation = myAskCalcChoice1.userInput())! = 5) – userQuestion

ответ

0

Для начала, вы вызываете showResults с двумя аргументами: INT выбор и поплавок [] е

выбор никогда не используется. Вместо этого вы используете переменную ввода в своем коммутаторе, но по умолчанию вы возвращаете ошибку, показывающую выбор.

Лучше пройти выбор в качестве аргумента в функции и быть уверенным, что это символ, а не другой тип.

Также это не форма хорошего заявленного вопроса. Я не буду оценивать его, но, пожалуйста, переделайте его, чтобы весь код был правильно показан. Я не могу легко это понять. Я мог бы это неправильно понять. Пожалуйста, не добавляйте комментарии между ними, убедитесь, что у вас есть правильный отступ, и вы получили весь код. Если вам нужно прокомментировать, сделайте это позже. Это не очень сложно, просто покажите нам код и спросите, что не так позже;)

Если выбор был предназначен для передачи в коммутаторе ... тогда сделайте это, но не как int, а как char.

Смежные вопросы