使用Java数组的问题 import java.io.*; 公共类数组{ 公共静态void main(字符串args[])引发IOException{ 缓冲区读取 Input=新的BufferedReader(新的InputStreamReader(System.in)); System.out.println(“有多少条标准?”);//询问有多少条记录 int n=Integer.parseInt(inpt.readLine());//存储在n中 int[]arrayCrit=new int[n];//创建大小为n的数组 String[]crits=新字符串[n]; //**正如您在“编辑”中提到的,您希望在打印前获取所有输入** 对于(int i=0;in1时,您将出现此错误。更改以下代码:
您在使用Java数组的问题 import java.io.*; 公共类数组{ 公共静态void main(字符串args[])引发IOException{ 缓冲区读取 Input=新的BufferedReader(新的InputStreamReader(System.in)); System.out.println(“有多少条标准?”);//询问有多少条记录 int n=Integer.parseInt(inpt.readLine());//存储在n中 int[]arrayCrit=new int[n];//创建大小为n的数组 String[]crits=新字符串[n]; //**正如您在“编辑”中提到的,您希望在打印前获取所有输入** 对于(int i=0;in1时,您将出现此错误。更改以下代码:,java,arrays,Java,Arrays,您在arrayCritr上从0迭代到n,但您使用n1初始化arrayCritr,两者都来自用户输入 如果n比n1大,您将得到该异常 在您的例子中,n是4,n1应该是2,因此您将得到一个异常 将for循环更改为使用n1 import java.io.*; public class Array { public static void main(String args[]) throws IOException { BufferedReader inpt = new Buffe
arrayCritr
上从0迭代到n
,但您使用n1
初始化arrayCritr
,两者都来自用户输入
如果n
比n1
大,您将得到该异常
在您的例子中,n
是4,n1
应该是2,因此您将得到一个异常
将for循环更改为使用
n1
import java.io.*;
public class Array {
public static void main(String args[]) throws IOException {
BufferedReader
inpt = new BufferedReader(new InputStreamReader(System. in ));
System.out.println("How many criteria?");//ask for how many records
int n = Integer.parseInt(inpt.readLine());// store in n
int[] arrayCrit = new int[n];//create array with size n
String[] crits = new String[n];
//**as you mentioned in edit you want to take all the input before printing**
for (int i = 0; i < n; i++)
{
System.out.print("Criteria: ");
crits[i] = inpt.readLine();
System.out.print("Percentage: ");
arrayCrit[i] = Integer.parseInt(inpt.readLine());
}
System.out.println("How many students' record?");
int n1 = Integer.parseInt(inpt.readLine());
int [] arrayCritr = new int [n1];
String [] arraySname = new String [n1];
for(int i=0; i<n1; i++){
String name;
System.out.print("Student Name: ");
arraySname[i] = inpt.readLine();
for(int j=0; j<n; j++){
System.out.print("Grade in "+ crits[i] + ": ");
arrayCritr[j] = Integer.parseInt(inpt.readLine());
crits[i]=crits[i+1];
}
crits[i]=crits[i-i];
}
}
}
接近终点的那一行:
int [] arrayCritr = new int [n];
for(int j=0;j您的arrayCritr大小为n1,但您使用的索引是从0到n。当您的n>n1时,您将出现此错误。更改以下代码:
arrayCritr[j]=Integer.parseInt(inpt.readLine())
到
arrayCritr[i]=Integer.parseInt(inpt.readLine())
同样,在嵌套循环中使用arrayCritr也没有意义,因此最好将其移到更高的位置。您在Crits[i]
=Crits[i+1]行中弄乱了Crits
数组`
很快,所有条件都将被最后一个条件覆盖。您已经开始在第一位输出中看到:
for(int j=0; j<n1; j++){
但实际上,您需要清楚地了解每个数组的含义,每个循环计数器的含义。使用伪代码可以帮助您做到这一点:
Student Name: Wayne
Grade in Quiz: 90
Grade in Att: 80
Grade in Att: 70
当您查看代码时,您会发现您的结构没有很好地遵循这一点。不要更改criteria数组-只更改数组中您指向的位置(即索引)
在这种情况下,使用更有意义的变量名是很有帮助的:numStudents
和numCriteria
,以及studentIndex
和criteriaIndex
,而不是n,n1,i,j
。一旦这样做,事情就会得到解决,问题就会变得很明显。你想在这一行中做什么>crits[i]=crits[i-i];
?这毫无意义。是否有打字错误?您不能从“故事的中间”开始打开一个新主题“…每个学生都有多分还是单分?”Floris我正在尝试重置该值,以便第二个学生以“测验中的分数”开始而不是继续数组。我尝试了这样做,但它仍然没有移动..我为什么选择(int j=0;j
for(int j=0; j<n1; j++){
Student Name: Wayne
Grade in Quiz: 90
Grade in Att: 80
Grade in Att: 70
get number of criteria
get each criteria as input
get number of students
for each student in students:
output student name
for each c in criteria:
output criteria for this student