我正在编写一个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的答案。
答案 0 :(得分:1)
此行之后:String keyboard = input.next();
你应该这样做:
if(!(keyboard==null))
guesses++;
那时你是对的:avg=guesses/lineNum;
*提示guesses & lineNum
应为int
,其中guesses
代表他回答的次数,lineNum
代表行数。此处无需加倍< / p>
int占用的空间少于Ram上的双倍