Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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

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 找不到符号-超出范围错误_Java_Arrays - Fatal编程技术网

Java 找不到符号-超出范围错误

Java 找不到符号-超出范围错误,java,arrays,Java,Arrays,我正在做一项课堂作业。基本上,我们必须使用一维数组来显示学生的姓名、当前成绩和科目。代码如下: import java.util.*; import java.util.Arrays; public class sortStudents { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter the

我正在做一项课堂作业。基本上,我们必须使用一维数组来显示学生的姓名、当前成绩和科目。代码如下:

import java.util.*;
import java.util.Arrays;

public class sortStudents {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of students: ");
        int numofstudents = input.nextInt();
        String[] names = new String[numofstudents];
        int[] array = new int[numofstudents];
        String[] subject = new String[numofstudents];
        for(int i = 0; i < numofstudents; i++) {
            System.out.print("Enter the student's name: ");
            names[i] = input.next();
            System.out.print("Enter the student's score: ");
            array[i] = input.nextInt();
            System.out.print("Enter the subject: ");
            subject[i] = input.next();
        }
        selectionSort(names, array, subject);
        System.out.println(names[i] + array[i] + subject[i]);

    }
    public static void selectionSort(String[] names, int[] array, String[] subject) {
        for(int i = array.length - 1; i >= 1; i--) {
            String temp;
            String classTemp = " ";
            int currentMax = array[0];
            int currentMaxIndex = 0;
            for(int j = 1; j <= i; j++) {
                if (currentMax > array[j]) {
                    currentMax = array[j];
                    currentMaxIndex = j;
                }
            }       
                if (currentMaxIndex != i) {
                    temp = names[currentMaxIndex];
                    names[currentMaxIndex] = names[i];
                    names[i] = temp;
                    array[currentMaxIndex] = array[i];
                    array[i] = currentMax;
                    subject[currentMaxIndex] = subject[i];
                    subject[i] = classTemp;
                }
        }       
    }
}
import java.util.*;
导入java.util.array;
公开课学生{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入学生人数:”);
int numofstudents=input.nextInt();
字符串[]名称=新字符串[numofstudents];
int[]数组=新int[numofstudents];
String[]subject=新字符串[numofstudents];
for(int i=0;i=1;i--){
字符串温度;
字符串classTemp=“”;
int currentMax=数组[0];
int currentMaxIndex=0;
对于(int j=1;j数组[j]){
currentMax=数组[j];
currentMaxIndex=j;
}
}       
如果(currentMaxIndex!=i){
temp=名称[currentMaxIndex];
名称[currentMaxIndex]=名称[i];
名称[i]=临时工;
数组[currentMaxIndex]=数组[i];
数组[i]=currentMax;
主题[currentMaxIndex]=主题[i];
主题[i]=类别临时工;
}
}       
}
}
在第22行编译时产生错误。我想这是因为变量“I”没有在循环外初始化。但是当我把变量“I”放在循环之外时,我得到了一个数组越界错误。如果您能帮助解决此问题,我们将不胜感激:)


另外,我是这个网站的新手,所以如果我发布的内容不正确,我深表歉意

当您进入
System.out.println(名称[i]+数组[i]+主题[i])范围中没有
i
变量

  • 如果每次输入时都试图打印信息,请将该代码放入现有的
    for
    循环中
  • 如果要在末尾打印排序列表,则需要使用另一个变量在数组中运行另一个
    for
    循环

    for(int j = 0; j < numOfStudents; j++) {
        System.out.println(names[i] + array[i] + subject[i]);
    }
    
    for(int j=0;j
  • 执行此操作时:

    System.out.println(names[i] + array[i] + subject[i]);
    
    i
    变量不存在,因为它直接位于for循环之后,它确实存在

    您可以做的是在它周围放置另一个for循环:

    for(int p =0; p < numOfStudents; p++)
    {
     System.out.println(names[p] + array[p] + subject[p]);
    }
    
    for(int p=0;p
    您应该始终发布堆栈跟踪<代码>用于(int i=array.length-1
    如果
    array.length
    为0会发生什么?您需要再次迭代这些数组以打印内容。当您将
    i
    放在循环外部时,请注意退出循环时它等于
    numofstudents
    。我假设您想要打印所有信息,在这种情况下,Rohit是正确的。否则,您可以根据需要修改索引。您在第22行上到底想做什么?打印所有数组?很高兴问题得到解决!此外,当答案对您有用或有帮助时,通常在stackoverflow上向上投票或接受答案。如果此答案中的循环迭代器为j,则应读取System.out.println(名称[j]+数组[j]+主题[j]);