Java for循环跳过运行两次
我的代码似乎重复了for循环两次,然后才给了我回答的机会。我整天都在盯着这个,我很确定我对自己犯的任何错误都视而不见。如果能帮上点忙,我将不胜感激 我很抱歉挪威人被困在那里,但这与问题无关Java for循环跳过运行两次,java,loops,repeat,Java,Loops,Repeat,我的代码似乎重复了for循环两次,然后才给了我回答的机会。我整天都在盯着这个,我很确定我对自己犯的任何错误都视而不见。如果能帮上点忙,我将不胜感激 我很抱歉挪威人被困在那里,但这与问题无关 public static void verb(){ System.out.print("Oppgi navn på verbfil: "); Scanner input = new Scanner(System.in); String fileName = input.nextLin
public static void verb(){
System.out.print("Oppgi navn på verbfil: ");
Scanner input = new Scanner(System.in);
String fileName = input.nextLine();
File textFile = new File(fileName);
try{
Scanner fileInput = new Scanner(textFile);
System.out.print("\nVelkommen til programmet som tester deg i bøyning av engelske verb.\nDu kan velge opp til 88 verb å bli testet i.\nDu vil få en vurdering når testen er ferdig\n\n");
System.out.print("Ønsker du å prøve dette? (ja/nei) ");
String yesNo = input.next();
if (yesNo.toLowerCase().equals("ja")){
System.out.print("\nOppgi ønsket antall verb: ");
int points = 0;
int amountVerbs = input.nextInt();
for (int i = 1; i <= amountVerbs; i++){
String verb1 = fileInput.next();
String verb2 = fileInput.next();
String verb3 = fileInput.next();
int verbSelect = randomGen(3);
if (verbSelect == 1){
System.out.print("... " + verb2 + " - " + verb3);
System.out.print("\nSkriv inn formen som mangler: ");
String answer = input.nextLine();
if (answer.toLowerCase().equals(verb1)){
points+= 1;
}
}
if(verbSelect == 2){
System.out.print(verb1 + " - " + "..." + " - " + verb3);
System.out.print("\nSkriv inn formen som mangler: ");
String answer = input.nextLine();
if (answer.toLowerCase().equals(verb2)){
points+= 1;
}
}
if(verbSelect == 3){
System.out.print(verb1 + " - " + verb2 + " - " + "...");
System.out.print("\nSkriv inn formen som mangler: ");
String answer = input.nextLine();
if (answer.toLowerCase().equals(verb3)){
points+= 1;
}
}
}
System.out.print("Oppgi navnet ditt: ");
String name = input.nextLine();
System.out.print(name + "\n" + "Score: " + points + " av " + amountVerbs);
} else{
System.out.print("Greit det.");
}
} catch (FileNotFoundException exc) {
System.out.println("Feil filnavn!");
}
}
public static int randomGen(int randMax){
Random generator = new Random();
int verbSelect = generator.nextInt(randMax) + 1;
return verbSelect;
}
}
公共静态void动词(){
系统输出打印(“Oppgi navn påverbfil:”;
扫描仪输入=新扫描仪(System.in);
字符串文件名=input.nextLine();
文件textFile=新文件(文件名);
试一试{
扫描仪文件输入=新扫描仪(文本文件);
System.out.print(“\n直到程序som测试器deg i bøyning av engelske谓词。\n直到88谓词bli testet i。\n直到vil fåen vurdering når测试器er ferdig\n\n”);
系统输出打印(“unsker duåprøve dette?(ja/nei)”;
字符串yesNo=input.next();
if(yesNo.toLowerCase().equals(“ja”)){
System.out.print(“\nOppgiønsket antall动词:”);
积分=0;
int amountVerbs=input.nextInt();
对于(int i=1;i,您的问题可能是因为您使用了Scanner对象以及它如何处理行尾(EOL)标记。请注意,只有Scanner#nextLine()
处理此标记,而next()
,nextdint()
,nextDouble()
等。通常情况下,如果让用户输入一个数字,在获得数字输入后立即调用nextLine()是值得的
e、 g
考虑改变这一点:
String yesNo = input.next();
对此
String yesNo = input.nextLine(); // handles EOL.
这是:
int amountVerbs = input.nextInt();
为此:
int amountVerbs = input.nextInt();
input.nextLine(); // to swallow the EOL token.
你的扫描仪的其他用途也是如此。它应该做什么?你的意思是它在允许任何输入之前打印两次Skriv inn formen som mangler:
?哈,结果它是你的!嘿,现在我可以问你对->double d=double.parseDouble(input.nextLine())的感觉如何
,为了避免吃下线的人?@ChiefTwoPencils:只要你能捕获数字格式异常,那就行了。
int amountVerbs = input.nextInt();
input.nextLine(); // to swallow the EOL token.