2017-04-02 23 views
0

正確的代碼應該輸出華氏度和攝氏度問乘法問題,總的答案在Java中

public static void main(String[] args) { 
    System.out.println("Fahrenheit\tCelsius"); 
    System.out.println("======================="); 
    for(int temp = -45; temp <= 120; temp += 5) //for(int i = 0; i <= 100; i+= 10) 
     { 
      System.out.printf("%5d  |",   temp); 
      double sum = (temp + (9.0/5.0)) * 32; 
      System.out.printf("%5d", (int)sum); 
      System.out.printl 

n(); 
+1

一個主要問題:不守重新創建while循環中的掃描儀。您將掃描儀基於System.in,並且您不希望它結束​​,直到程序完成並不再需要此輸入。因此,在您的while循環之前,只能使掃描儀一次**。 –

+0

我有一個deja弱點嗎?那天我不是幾乎同樣的問題嗎?它發生了關閉和刪除,現在你再試一次? – GhostCat

+1

感謝您的回答。我確實有這種傾向。我會看看我是否可以修改。 @氣墊船。 –

回答

0

表你應該這樣做的計算都在一個包含while循環。

while循環僞代碼是這樣的:

string answer = ""; 
While (answer != quit) 
{ 
answer = (ask question to user) 
if (answer != quit) 
    compute/display response 
} 
0

看起來你的括號不打開和正常關閉。此外,userScore和totalScore在每次迭代中都會重置。所以你不會有正確的分數。將它移到循環之外。

import java.util.Scanner; 

public class Multiplication { 

    private static String question; 
    private static Scanner input; 
    private static Scanner scanner; 
    private static int totalScore; 
    private static int answer1; 
    private static int userScore; 

    public static void main(String[] args) { 
     int number1; 
     int number2; 
     totalScore = 0; 
     userScore = 0; 
     input = new Scanner(System.in); 
     do { 
      number1 = (int)(Math.random() * 10); 
      number2 = (int)(Math.random() * 10);  

      System.out.print("What is " + number1 + " * " + number2 + "? "); 
      int answer = input.nextInt(); 
      while (number1 * number2 != answer) 
      { 
       int answer1 = number1 * number2; 
       System.out.println("Incorrect. The answer is " + answer1+"."); 
       System.out.print("Want more questions yes or no? "); 
       scanner = new Scanner (System.in); 
       question = scanner.next(); 
       totalScore++; 
       break; 
      } 

      if (number1 * number2 == answer) 
      { 
       System.out.println("Correct. Nice work!"); 
       System.out.print("Want more questions yes or no? "); 
       scanner = new Scanner (System.in); 
       question = scanner.next(); 
       userScore++; 
       totalScore++; 
      } 

     }while(question.equals("yes") || question.equals("y")); 
     System.out.println("You have this many questions correct:" + userScore +" out of " + totalScore); 
    } 
} 

更好地實施

代碼看起來這裏更具可讀性和代碼的幾個不必要的行被刪除。

import java.util.Scanner; 

public class Multiplication { 

    private static final Scanner scanner = new Scanner (System.in); 
    private static int totalScore = 0; 
    private static int userScore = 0; 
    private static int number1; 
    private static int number2; 
    private static int answer; 

    public static boolean continueExe(){ 
     String question; 
     System.out.print("Want more questions yes or no? "); 
     question = scanner.next(); 
     return (question.equals("yes") || question.equals("y"));   
    } 

    public static void printOutput(){ 
     System.out.println("You have this many questions correct:" + userScore +" out of " + totalScore); 
    } 

    public static void askQuestion(){ 
     number1 = (int)(Math.random() * 10); 
     number2 = (int)(Math.random() * 10); 
     System.out.print("What is " + number1 + " * " + number2 + "? "); 
    } 

    public static void readAnswer(){ 
     answer = scanner.nextInt(); 
    } 

    public static void isAnswerCorrect(){ 
     if (number1 * number2 != answer){ 
      System.out.println("Incorrect. The answer is " + number1 * number2 +"."); 
     }else{ 
      userScore++; 
      System.out.println("Correct. Nice work!"); 
     } 
     totalScore++; 
    } 

    public static void main(String[] args) { 
     do{ 
      askQuestion(); 
      readAnswer(); 
      isAnswerCorrect(); 
     }while(continueExe()); 
     printOutput(); 
    } 
} 
+0

非常感謝。第二個代碼看起來非常先進。 –

0

錯是你打開了「if'statement '{' 兩次 -

if (question.equals("no")||question.equals("n")&& (number1 * number2 == answer)){ 
{ 

,忘了在最後一行關閉一個支架。

下面的代碼解決了錯誤,由於支架:

import java.util.Scanner; 

public class Program3_3 { 

private static String question; 
private static Scanner input; 
private static Scanner scanner; 
private static int totalScore; 
private static int answer1; 
private static int userScore; 

public static void main(String[] args) { 
do { 
    int number1 = (int)(Math.random() * 10); 
    int number2 = (int)(Math.random() * 10);  
    totalScore = 0; 
    userScore = 0; 
    input = new Scanner(System.in); 
    System.out.print("What is " + number1 + " * " + number2 + "? "); 
    int answer = input.nextInt(); 
    while (number1 * number2 != answer) { 
     int answer1 = number1 * number2; 
     System.out.println("Incorrect. The answer is " + answer1+"."); 
     System.out.print("Want more questions yes or no? "); 
     scanner = new Scanner (System.in); 
     question = scanner.next(); 
     break; 
    } 

    if (number1 * number2 == answer){ 
     System.out.println("Correct. Nice work!"); 
     System.out.print("Want more questions yes or no? "); 
     scanner = new Scanner (System.in); 
     question = scanner.next(); 
     } 
    if (question.equals("no")||question.equals("n")&& (number1 * number2 == answer)) 
    { 
     userScore++; 
     totalScore++; 
      System.out.println("You have this many questions correct:" + totalScore); 
     } 
} 
    while(question.equals("yes") || question.equals("y")); 
    } 
}