Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 如何使用方法计算1个grades数组参数并返回数组的总数?_Java_Arrays_Class_Methods - Fatal编程技术网

Java 如何使用方法计算1个grades数组参数并返回数组的总数?

Java 如何使用方法计算1个grades数组参数并返回数组的总数?,java,arrays,class,methods,Java,Arrays,Class,Methods,我的作业要求我写一个Java程序。我有点不对劲 基本上,我必须创建一个Java方法,让用户输入x个等级数量(用户选择),将等级存储在数组中,然后将等级添加到数组中,以便在主方法中调用 这是我的密码: import java.util.Scanner; public class Sample { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in);

我的作业要求我写一个Java程序。我有点不对劲

基本上,我必须创建一个Java方法,让用户输入x个等级数量(用户选择),将等级存储在数组中,然后将等级添加到数组中,以便在主方法中调用

这是我的密码:

import java.util.Scanner;

public class Sample {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Hello Drews, how many total grades do you want to process?");
        int numberOfGrades = keyboard.nextInt();

        int [] storeGrades = new int[numberOfGrades];
    }

    public static int getTotalScore(int numberOfGrades[]) {
        Scanner keyboard = new Scanner(System.in);
        int getTotalScore;
        int []storeGrades;

        for (int i = 0; i < getTotalScore; i++) {
            System.out.println("Please enter grade " + (i + 1) + ": ");
            int userGradeNumbers = keyboard.nextInt();
            storeGrades[i] = userGradeNumbers;
            sum += userGradeNumbers;
        }
    }
}
import java.util.Scanner;
公共类样本{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“你好,德鲁斯,你想处理多少个总成绩?”);
int numberOfGrades=keyboard.nextInt();
int[]storeGrades=新int[numberOfGrades];
}
公共静态int getTotalScore(int numberOfGrades[]{
扫描仪键盘=新扫描仪(System.in);
int getTotalScore;
国际职系;;
for(int i=0;i

我在“sum”处得到一个错误,它没有被解析为变量?它不允许我在for循环中初始化sum,也不允许我在getTotalScore方法中初始化sum。为什么不呢?

首先,得到分数。然后调用该方法以获取
。在循环之前声明
,并将其初始化为
0
。以后还。像

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Hello Drews, how many total grades do you want to process?");
    int numberOfGrades = keyboard.nextInt();
    int[] storeGrades = new int[numberOfGrades];
    for (int i = 0; i < numberOfGrades; i++) {
        System.out.println("Please enter grade " + (i + 1) + ": ");
        storeGrades[i] = keyboard.nextInt();
    }
    System.out.println(getTotalScore(storeGrades));
}

public static int getTotalScore(int[] storeGrades) {
    int sum = 0;
    for (int i = 0; i < storeGrades.length; i++) {
        sum += storeGrades[i];
    }
    return sum;
}
publicstaticvoidmain(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“你好,德鲁斯,你想处理多少个总成绩?”);
int numberOfGrades=keyboard.nextInt();
int[]storeGrades=新int[numberOfGrades];
对于(int i=0;i
首先,获得分数。然后调用该方法以获取
。在循环之前声明
,并将其初始化为
0
。以后还。像

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Hello Drews, how many total grades do you want to process?");
    int numberOfGrades = keyboard.nextInt();
    int[] storeGrades = new int[numberOfGrades];
    for (int i = 0; i < numberOfGrades; i++) {
        System.out.println("Please enter grade " + (i + 1) + ": ");
        storeGrades[i] = keyboard.nextInt();
    }
    System.out.println(getTotalScore(storeGrades));
}

public static int getTotalScore(int[] storeGrades) {
    int sum = 0;
    for (int i = 0; i < storeGrades.length; i++) {
        sum += storeGrades[i];
    }
    return sum;
}
publicstaticvoidmain(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“你好,德鲁斯,你想处理多少个总成绩?”);
int numberOfGrades=keyboard.nextInt();
int[]storeGrades=新int[numberOfGrades];
对于(int i=0;i
您的代码的意图是正确的,但有些事情的顺序有点不正确,目前存在语法问题

我主张将代码分为两种方法(除非根据赋值明确禁止这样做)。一种方法是从用户处获取分数,另一种方法是求和分数。这样做的原因是,您最终尝试同时存储和求和成绩(这在技术上更有效),但这并没有教会您如何通过迭代数组来计算运行总数(这可能是本课程的重点)

我想说的另一件事(这可能超出了您现在所处的位置)是,当您使用扫描仪时,您需要验证用户是否键入了您认为他们键入的内容。您希望用户键入一个数字,然后他们键入“Avocado”,这是完全合理的。因为Java是强类型的,这将导致您的程序抛出异常并崩溃。我已经添加了一些基本的输入验证,作为一个例子来说明如何做到这一点;总的想法是:

1) 检查扫描仪是否有int 2) 如果没有int,请让用户重试 3) 否则,它有一个int,你可以继续。存储值

关于扫描仪的最后一件事记住关闭它们如果不这样做,在扫描仪继续运行时可能会导致内存泄漏

下面是我将如何修改您的代码以满足您的需要。如果有什么不合理的地方,给我一个评论,我会进一步解释。我把评论放在内联的地方,因为我觉得这样更容易消化

package executor;

import java.util.Scanner;

public class StudentGrades {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        // Initial prompt to the user
        System.out.println("Hello Drews, how many total grades do you want to process?");

        // This loop validates that the user has actually entered an integer, and prevents
        // an InputMismatchException from being thrown and blowing up the program.
        int numberOfGrades = 0;
        while (!keyboard.hasNextInt()) {
            System.out.println("Sorry, please enter a valid number!");
            keyboard.next();
        }

        // If the program makes it through the while loop, we know that the Scanner has an int, and can assign it.
        numberOfGrades = keyboard.nextInt();

        // Creating the array using the method getGrades().
        int[] storedGrades = getGrades(numberOfGrades, keyboard);

        // Calculating the total score using the method getTotalScore().
        int totalScore = getTotalScore(storedGrades);

        System.out.println("Total Score is: " + totalScore);
        keyboard.close();
    }

    /**
     * Asks the user to provide a number of grades they wish to sum.
     * @param numberOfGrades the total number of grades that will be requested from the user.
     * @param keyboard the scanner that the user will use to provide the grades.
     * @return the summed grades as an int.
     */
    public static int[] getGrades(int numberOfGrades, Scanner keyboard) {
        int[] grades = new int[numberOfGrades];

        // Asking the user i number of times, to enter a grade to store.
        for (int i = 0; i < numberOfGrades; i++) {
            System.out.println("Please enter grade " + (i + 1) + ":");

            // More input validation to ensure the user can't store "Cat."
            while (!keyboard.hasNextInt()) {
                System.out.println("Sorry, please enter a valid number!");
                keyboard.next();
            }

            int userEnteredGrade = keyboard.nextInt();

            // Storing the user's entry.
            grades[i] = userEnteredGrade;
        }
        return grades;
    }

    /**
     * Sums all of the grades stored within an integer array.
     * @param storedGrades the grades to be summed.
     * @return the total value of summed grades.
     */
    public static int getTotalScore(int[] storedGrades) {
        int totalScore = 0;
        for (int i = 0; i < storedGrades.length; i++) {
            totalScore += storedGrades[i];
        }
        return totalScore;
    }
}
包执行器;
导入java.util.Scanner;
公营班级学生成绩{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
//对用户的初始提示
System.out.println(“你好,德鲁斯,你想处理多少个总成绩?”);
//此循环验证用户是否实际输入了整数,并防止
//一个InputMismatchException被抛出并炸毁程序。
int numberOfGrades=0;
而(!keyboard.hasNextInt()){
System.out.println(“对不起,请输入一个有效的数字!”);
键盘。下一步();
}
//如果程序通过while循环,我们知道扫描器有一个int,并且可以分配它。
numberOfGrades=键盘.nextInt();
//使用getGrades()方法创建数组。
int[]storedGrades=getGrades(numberOfGrades,键盘);
//使用getTotalScore()方法计算总分。
int totalScore=getTotalScore(存储分数);
System.out.println(“总分为:“+totalScore”);
键盘关闭();
}
/**
*问