第二次循环尝试后的错误消息

时间:2018-02-14 13:07:44

标签: java

我正在做另一项任务而且被困了。首先,我意识到我可能无法从这段代码中得到我想要的结果,但目前我无法运行代码甚至看到我离我有多近。我确定我错过了一些简单的东西,并希望有人会在这里突然出现一些东西,所以我可以超越这一点。我的母语是英语,但我住在瑞典,并试图在瑞典语课程中学习代码,所以我添加了//翻译。 再次,我正在使用非常基本的代码,所以我不是在寻找一个简单的黑客,更多的只是对我出错的地方的一些见解。 我的任务是要求用户输入10个数字,将它们存储为数组。然后,为用户提供4个选项来计算这些数字,并提供第5个选项来退出程序。 这是我到目前为止所做的:

package inlämningsuppgift3;

import java.util.Scanner;
import java.util.Arrays;

public class Inlämningsuppgift3 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int nr;
    int antal = 0;
    int[] num = new int[10];
    int sum = 0;
    int min = 0;
    int max = 0;
    for (nr = 0; nr < 10; nr++) {
        System.out.println("Ange ett tal " + (nr+1) + " : ");

        int tal = input.nextInt();
        num[nr] = tal;
        if (nr == 0) { //first number
            min = tal;
            max = tal;
        }
        else { // All other numbers
            if (tal > max) { max = tal; }
            if (tal < min) { min = tal; }
        }

        sum = sum + tal;
    }
    {
        // What would you like to do?
        System.out.println("Välj vad du vill göra?");

        // Show largest number
        System.out.println("1: Visa storsta talet.");
        // Show smallest number
        System.out.println("2: Visa minsta talet.");
        // Show average
        System.out.println("3: Visa medeltalet.");
        // Show all numbers
        System.out.println("4: Visa alla inmatade tal.");
        // Quit
        System.out.println("5: Avsluta");
    }
    do {
        int k = input.nextInt();
        if (k == 1) {
            // Largest number is:
            System.out.println("Storsta talet är: " + max);
        }
        else if (k == 2) {
            // Smallest number is:
            System.out.println("Minsta talet är: " + min);
        }
        else if (k == 3) {
            // Average number is:
            System.out.println("Medeltalet är: " + sum/10);
        }
        else if (k == 4) {
            // All the entered numbers:
            System.out.println("Alla tal: " + num[10] + ", ");
        }
        else if (k==5) {
            // Goodbye
            System.out.println("Hej då!");
            break;
        }
        else {
            System.out.println("Felaktigt, prova igen.");
            // Unrecognized, try again.
        }
        while (k<5);
    }
}
}

我在最后3 }收到错误,我不知道为什么。他们在错误的地方吗?我试过移动它们,我已经尝试删除它们(显然,也没有帮助)我在代码中尝试更改我的{}位置并且没有找到解决此错误的方法。提前感谢您的任何意见!

2 个答案:

答案 0 :(得分:1)

java do-while语法是:

do {
   // Statements
}while(Boolean_expression);

所以,将其改为:

    int k = 0;
    do {
        k = input.nextInt();
        if (k == 1) {
            System.out.println("Storsta talet är: " + max);
        } else if (k == 2) {
            System.out.println("Minsta talet är: " + min);
        } else if (k == 3) {
            System.out.println("Medeltalet är: " + sum / 10);
        } else if (k == 4) {
            System.out.println("Alla tal: " + num[10] + ", ");
        } else if (k == 5) {
            System.out.println("Hej då!");//good bye
            break;
        } else {
            System.out.println("Felaktigt, prova igen.");
        }
    } while (k < 5) ;

并且while行之后必须是两个}

答案 1 :(得分:0)

Hej Hej!

我做了修改,我认为你要求让它“只是工作”

package Dunno;

import java.util.Scanner;

public class NumberCollector { //No special characters in source files,
                               //Can get transformed during deployment

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int nr;
    int antal =0;
    int[] num = new int[10];
    int sum = 0;
    int min=0;
    int max=0;
    for (nr=0; nr<10; nr++)
    {
        System.out.println("Ange ett tal " + (nr+1) + " : ");

        int tal = input.nextInt();
        num[nr]=tal;
        if(nr == 0) //first number
        {
            min=tal;
            max=tal;
        }
        else //all other numbers
        {
            if(tal>max)max =tal;
            if(tal<min) min=tal;
        }

        sum = sum + tal;
    }

    System.out.println("Välj vad du vill göra?");
//what would you like to do?


    System.out.println("1: Visa storsta talet.");
//Show largest number
    System.out.println("2: Visa minsta talet.");
//show smallest number
    System.out.println("3: Visa medeltalet.");//show average
    System.out.println("4: Visa alla inmatade tal.");
//show all numbers
    System.out.println("5: Avsluta");//quit




        while (true) //Moved the stop condition to start of the loop makes it easier to read logically.
        {
            int k = input.nextInt();

            if (k==1)
            {
                System.out.println("Storsta talet är: " + max);
//largest number is:
            }
            else if (k==2)
            {
                System.out.println("Minsta talet är: " + min);
//smallest number is:
            }
            else if (k==3)
            {
                System.out.println("Medeltalet är: " + sum/10);
//average number is:
            }
            else if (k==4)
            {
                System.out.println("Alla tal: " + num[10] + ", ");
//all the entered numbers:
            }
            else if (k==5)
            {
                System.out.println("Hej då!");//good bye
                break;
            }
            else
            {
                System.out.println("Felaktigt, prova igen.");
//unrecognized, try again.
            }
};
}
}

我只需要移动一些牙箍。 它似乎广泛地做你想要的?如果您要求结果4,它会抛出异常,我会留给您:)

也许这将是一个很好的起点?考虑用开关/案例条件替换循环会更好地读取和维护吗?