0

我正在用 Java 编写一个问答游戏,但我不知道如何找到用户的平均猜测次数。这是简单代码的游戏:

import java.util.Scanner;
import java.io.File;

public class JavaQuiz 
{
    public static void main(String[] args) throws Exception
    {

        Scanner input = new Scanner(System.in);

        File file = new File("questions.txt");

        Scanner scan = new Scanner(file);
        String line;
        double lineNum = 0;
        int skip = 0;
        int correct = 0;
        double guesses = 0;

        while(scan.hasNextLine()){
            // Counting of the line number
            lineNum = lineNum + 1;
            // Scanning the next line
            line = scan.nextLine();

            // Declaring the delimeter.
            String delimiter = "\\|";
            // Splitting the line
            String[] temp = line.split(delimiter);

            // Print out the questions
            System.out.println(temp[0]);

            // Wait for the user to input
            String keyboard = input.next();
            // Take the space off the answer
            String two = temp[1].replaceAll("\\s","");

            if(keyboard.equals("q")){
                skip = skip + 1;
            }

            else{

                while(!(keyboard.equals(two)) && !(keyboard.equals("q"))){


                    keyboard = input.nextLine();

                    if(keyboard.equals("q")){
                        skip = skip + 1;
                    } else {
                        System.out.println("Incorrect. Please Try Again");
                    }

                } 

                    if(keyboard.equals(two)){
                        correct = correct + 1;
                    }
            }

        }

        System.out.println("You got " + correct + " Questions Correct.");
        System.out.println("You skipped " + skip + " questions.");
        System.out.println("And for the questions you completed, you averaged " + avg + " guesses.");        
    }
}

我应该做这样的事情吗?

double avg = guesses / lineNum;

无论如何,我得到的答案是 0。

4

1 回答 1

1

在此行之后:String keyboard = input.next(); 您应该执行以下操作:

if(!(keyboard==null))
    guesses++;

那么你是对的:avg=guesses/lineNum;

*tipguesses & lineNum应该是intwhereguesses代表他回答的次数,lineNum代表行数。这里不需要加倍

int 在 Ram 上占用的空间比 double 少

于 2013-02-01T01:09:46.197 回答