Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for循环跳过运行两次_Java_Loops_Repeat - Fatal编程技术网

Java 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

我的代码似乎重复了for循环两次,然后才给了我回答的机会。我整天都在盯着这个,我很确定我对自己犯的任何错误都视而不见。如果能帮上点忙,我将不胜感激

我很抱歉挪威人被困在那里,但这与问题无关

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.