2017-04-02 41 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")); 
    } 
}