import java.util.Scanner;
public class Array {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int i=0;
String[] name = new String[i];
int[] roll = new int[i];
float[] total = new float[i];
float[] per = new float[i];
System.out.println("Enter the no of student/s \n");
int no=sc.nextInt();
for(i=1;i<=no;i++)
{
System.out.println("Enter the Name of Student.");
name[i] = sc.nextLine();
System.out.println("Enter the RollNo of Student.");
roll[i]=sc.nextInt();
System.out.println("Enter the Subject marks");
int[] marks = new int[5];
for(i=1;i<=5;i++)
{
marks[i]=sc.nextInt();
total[i]+=marks[i];
}
per[i]=(total[i]/500)*100;
}
System.out.println("To get details press Y to cancel press N.");
Scanner reader = new Scanner(System.in);
char choice = reader.next().trim().charAt(0);
switch(choice)
{
case 'Y':
for(i=0;i<=no;i++)
{
System.out.println("Name: "+name[i]);
System.out.println("Rollno: "+roll[i]);
System.out.println("Total marks: "+total[i]);
System.out.println("Percentage: "+per[i]);
if(per[i]>=80)
{
System.out.println(" Distinction!!!");
}
else if(per[i]>=60&&per[i]<=80)
{
System.out.println("First Division");
}
else if(per[i]>=40&&per[i]<=60)
{
System.out.println("Second Division");
}
else{
System.out.println("Fail");
}
}
case 'N':
System.out.println("Exit");
}
}
}
当学生名称的扫描行程序终止时。请问,产生错误的原因是什么。我是Java新手。
答案 0 :(得分:0)
在了解学生人数后,您必须初始化数组大小。你在这里创建一个大小为0的数组:
int i=0;
String[] name = new String[i];
答案 1 :(得分:0)
例外是AraryIndexOutOfBound,您尚未分配字符串数组。 你的代码应该是这样的东西,彻底重做,有很多错误
int no=sc.nextInt();
String[] name = new String[no];
for(i=0;i<no;i++)
{
System.out.println("Enter the Name of Student.");
name[i] = sc.nextLine();
System.out.println("Enter the RollNo of Student.");
roll[i]=Integer.parseInt(sc.nextLine());
System.out.println("Enter the Subject marks");
}
答案 2 :(得分:0)
创建数组后,您无法更改数组的大小!
正如上面的@inwi所建议的
小心你在这里创建大小为零的数组!
int i = 0;
String[] name = new String[i];
int[] roll = new int[i];
float[] total = new float[i];
float[] per = new float[i];
这是代码中的问题。在接受一些学生作为输入之后创建数组
// ....
System.out.println("Enter the no of student/s \n");
int no=sc.nextInt();
String[] name = new String[no];
int[] roll = new int[no];
float[] total = new float[no];
float[] per = new float[no];
还要注意访问数组元素的方式,数组是基于Java的0 所以从i = 0开始你的迭代;在所有代码中查看此内容
for(i=1;i<=no;i++) {
快乐的编码!!
祝你好运
答案 3 :(得分:0)
问题是你的roll
和name
数组从下面的代码行初始化为0,你试图在for循环中的索引1处访问它们的元素,所以你必须得到ArrayIndexOutOfBound
例外
int i=0;
String[] name = new String[i];
int[] roll = new int[i];
然后您从索引1
开始访问以下代码System.out.println("Enter the RollNo of Student.");
roll[i]=sc.nextInt();
您需要根据学生人数重新初始化您的卷阵列,如下所示
roll = new int[no];
name = new String[no];
在使用数组时,您需要更改for循环,如下所示
for(i=0;i<no;i++)