使用while循环返回开始

时间:2011-04-21 03:32:37

标签: java

/ --------------------------------------- ----------------- Quizzes.java ------------ ---------------------------------------- /    import java.util.Scanner;     import java.text.NumberFormat;

公共课测验    {       public static void main(String [] args)       {

     Scanner scan = new Scanner(System.in);
        NumberFormat per = NumberFormat.getPercentInstance();     


  //User to input keys for quiz
     System.out.println("How many questions are in the quiz?");
     int numques = scan.nextInt();
     int[] keys = new int[numques];

     for (int i=0; i<keys.length; i++)
     {
        System.out.print("Please enter the key for # " + (i+1)+ ": " );
        keys[i] = scan.nextInt();         
     }

  //User to input answer
     System.out.println("\nGrading Quizzes");
     System.out.println("--------------------");

        int correct=0;

     for (int i=0; i<keys.length; i++)
     {
        System.out.println("Please enter the answer for # " + (i+1)+ ":  ");
        int answer= scan.nextInt();
            if (answer== keys [i])
            {
                System.out.print("Number "+(i+1)+" is correct.\n");
                correct++;
            }
            else 
            {
                System.out.print("Number "+(i+1)+" is incorrect.\n");

            }
     }
    double cal=(double) correct/numques;
        System.out.println("Total number of correct is "+correct);
     System.out.println("The percent correct is " +per.format(cal));

        System.out.println("Would you like to grade another quiz? (y/n)");
        String user_input=scan.next();

        while(user_input.equals("y"))
        {   correct=0;
     for (int i=0; i<keys.length; i++)
     {
        System.out.println("Please enter the answer for # " + (i+1)+ ":  ");
        int answer= scan.nextInt();
            if (answer== keys [i])
            {
                System.out.print("Number "+(i+1)+" is correct.\n");
                correct++;
            }
            else {
            System.out.print("Number "+(i+1)+" is incorrect.\n");   }

            } 
           cal=(double) correct/numques;
           System.out.println("Total number of correct is "+correct);
        System.out.println("The percent correct is " +per.format(cal));
      }
           System.out.println("Goodbye!");

 }

}

如何让程序返回到用户必须使用while循环输入答案的位置?无论我尝试什么,当它打印出来时,“你想评分另一个测验,如果用户键入y,它就会结束。任何人都可以指出我做错了什么

编辑1:我在while循环之后让它重新运行但它一直要求我一遍又一遍地输入问题的答案,它不会突破循环,它不会回到那个问我是否想要评分另一个的部分。这是输出

测验中有多少问题? 2 请输入#1:1的密钥 请输入#2:2

的密钥

评分测验

请输入#1的答案:
1 1号是正确的。 请输入#2的答案:
3 2号不正确。 正确的总数是1 正确率为50% 你想评分另一个测验吗? (Y / N) ÿ 请输入#1的答案:
1 1号是正确的。 请输入#2的答案:
2 2号是正确的。 正确的总数是2 百分比正确率为100% 请输入#1的答案:
1 1号是正确的。 请输入#2的答案:
2 2号是正确的。 正确的总数是2 百分比正确率为100% 请输入#1的答案:

4 个答案:

答案 0 :(得分:2)

while(user_input.equals('y'))

应该是

while(user_input.equals("y")) // see the double quotes here

您的代码存在问题,即'y'字符被自动添加到Character类的实例,该类是Object的子类。

  

Class Object是类的根   层次结构。每个类都有Object作为   超类。所有对象,包括   数组,实现这个方法   类

public boolean equals(Object)的候选人也是如此。

String的{​​{1}}实现检查实例是否为boolean equals(Object)类型。如果失败,它将只返回String。 如果您想与false进行比较,请尝试此操作。

'y'

答案 1 :(得分:0)

我会把问题放一个while循环,它会像

while (true) {

 // ask the users the questions 

 // ask if he wants to continue... if no then break; else continue

}

答案 2 :(得分:0)

确定在程序开头添加while(true)并添加适当的括号以包含整个方法的内容。然后,删除当前的while循环。在获得user_input的输入后说:

if (user_input.equals("y")) {
}
else {
    break;
}

答案 3 :(得分:0)

您将使用while(user_input.equals("y"))循环替换此项,并且您指出的问题将消失,但我认为您的代码仍然无法按预期工作。我认为您需要对代码进行更多修正

  1. while循环应该是while(user_input.equalsIgnoreCase("y"))
  2. 在完成for循环后放入while循环和最后的括号,然后将这两个语句一次又一次地检查。
  3. 按照以下代码快照

    而(user_input.equalsIgnoreCase( “Y”))     {

        for (int i=0; i<keys.length; i++)
        {
            ....               
        }
    
        System.out.println("Would you like to grade another quiz? (y/n)");
        user_input=scan.next();
    }