Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 需要从一组用户';s级_Java_Arrays_Methods_Average - Fatal编程技术网

Java 需要从一组用户';s级

Java 需要从一组用户';s级,java,arrays,methods,average,Java,Arrays,Methods,Average,在我的java类中,我们开始编写方法,而不是将所有代码放在主方法中。习题集中的一个问题是“编写一个方法,询问用户所修课程的数量n。然后该方法将询问在这些课程中获得的n个分数并返回其平均值”。以下是我目前掌握的情况: import java.util.*; public class MethodPracticeSet2 {public static int average() { //Create new Scanner object Scanner

在我的java类中,我们开始编写方法,而不是将所有代码放在主方法中。习题集中的一个问题是“编写一个方法,询问用户所修课程的数量n。然后该方法将询问在这些课程中获得的n个分数并返回其平均值”。以下是我目前掌握的情况:

 import java.util.*;

    public class MethodPracticeSet2 
    {public static int average()
    {
    //Create new Scanner object
    Scanner sc=new Scanner(System.in);

    //Create divisor variable
    int divisor=0;

    //Ask user for their course
    System.out.println("How many courses are you currently in?");
    int course =sc.nextInt();
    for (int i=0; i<course; i++)
    {
        System.out.println("What are your grades for those courses?");
        int grades[]= new int[i];
        grades[i]=sc.nextInt();
        divisor= divisor+i;
    }
    System.out.println("Your average for these courses is "+divisor/course);
    return average();
    }

    public static void main(String[] args) 
    {
        int output=average();
        System.out.println(output);
    }

    }  

任何帮助都会很好

首先,需要在循环之前声明数组。目前,您正在循环的每次迭代中创建一个新数组,这显然不是您想要做的;这也是您获得
ArrayIndexOutOfBoundsException
的原因,原因是当您使用
i
being
0
实例化数组时,您试图将数字存储到空数组中,因此出现异常


以下是声明数组的方式:

int grades[] = new int[course];

for (int i = 0; i < grades.length; i++)
{
    System.out.println("What are your grades for those courses?");
    grades[i] = sc.nextInt();
    divisor += 1;
}
试试这个:

public class MethodPracticeSet2 {
public static int average() {
    // Create new Scanner object
    Scanner sc = new Scanner(System.in);

    // Create divisor variable
    int divisor = 0;

    // Ask user for their course
    System.out.println("How many courses are you currently in?");
    int course = sc.nextInt();
    System.out.println("What are your grades for those courses?");
    int sum = 0;
    for (int i = 0; i < course; i++) {
        sum += sc.nextInt();
    }
    System.out.println("Your average for these courses is " + (float) sum / course);
    return average();
}

public static void main(String[] args) {
    int output = average();
    System.out.println(output);
}
公共类方法练习集2{
公共静态整数平均值(){
//创建新的扫描仪对象
扫描仪sc=新的扫描仪(System.in);
//创建除数变量
整数除数=0;
//向用户询问他们的课程
System.out.println(“你目前修了多少门课?”);
int course=sc.nextInt();
你对这些课程的分数是多少;
整数和=0;
对于(int i=0;i

}

仅解决IndexOutOfBounds症状。对解决实际问题没有任何作用。顺便说一句:递归调用是OP的,这里没有介绍。请尝试使用正确的缩进。
int totalGrades = 0;

for(int grade : grades){
   totalGrades += grade;
}
System.out.println("Your average for these courses is "+totalGrades / divisor);
return totalGrades / divisor;
public class MethodPracticeSet2 {
public static int average() {
    // Create new Scanner object
    Scanner sc = new Scanner(System.in);

    // Create divisor variable
    int divisor = 0;

    // Ask user for their course
    System.out.println("How many courses are you currently in?");
    int course = sc.nextInt();
    System.out.println("What are your grades for those courses?");
    int sum = 0;
    for (int i = 0; i < course; i++) {
        sum += sc.nextInt();
    }
    System.out.println("Your average for these courses is " + (float) sum / course);
    return average();
}

public static void main(String[] args) {
    int output = average();
    System.out.println(output);
}