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]);