在Java中从数组获取输入变量
我正在尝试打印此数组中学生的姓名。我一直收到一条错误消息说 [Ljava.lang.String;@55f96302 我声明并初始化顶部附近的名称,并尝试使用“System.out.println”(“学生”+Names+“的平均分数为:“+avg”);”打印它,但很明显,仅使用名称并不能解决问题。我如何修复代码在Java中从数组获取输入变量,java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,我正在尝试打印此数组中学生的姓名。我一直收到一条错误消息说 [Ljava.lang.String;@55f96302 我声明并初始化顶部附近的名称,并尝试使用“System.out.println”(“学生”+Names+“的平均分数为:“+avg”);”打印它,但很明显,仅使用名称并不能解决问题。我如何修复代码 import java.util.Scanner; public class Grades { //An array to hold the student names
import java.util.Scanner;
public class Grades {
//An array to hold the student names
String[] Names = new String[6];
//An array to hold students letter grades
char[] LetterGrades = new char[6];
//an array to hold each of the students test scores
double[] Test1Scores = new double[6];
double[] Test2Scores = new double[6];
double[] Test3Scores = new double[6];
void EnterData() {
//initialize the scanner to parse the user inputs
Scanner sc = new Scanner(System.in);
//initialize the for loop and create iterations from 0 to 6
for (int i = 0; i < 6; i++) {
//get user's name
System.out.print("Enter the name of student " + (i + 1) + ": ");
Names[i] = sc.next();
//Create a while loop to get each of the students test scores
do {
System.out.print("Enter the score for Test 1: ");
Test1Scores[i] = sc.nextDouble();
} while (Test1Scores[i] < 0 || Test1Scores[i] > 100);
do {
System.out.print("Enter the score for Test 2: ");
Test2Scores[i] = sc.nextDouble();
} while (Test2Scores[i] < 0 || Test2Scores[i] > 100);
do {
System.out.print("Enter the score for Test 3: ");
Test3Scores[i] = sc.nextDouble();
} while (Test3Scores[i] < 0 || Test3Scores[i] > 100);
System.out.println("Testscores: " + Test1Scores[i] + " " + Test2Scores[i] + " " + Test3Scores[i]);
}
}
void GetNames() {
for (int i = 0; i < 6; i++)
System.out.println((i + 1) + ". " + GetName(i + 1));
}
String GetName(int studNumber) {
return (Names[studNumber - 1]);
}
//prints the 3 test scores of the student
void GetTestScores(int studNumber) {
System.out.println(GetTestScore(studNumber, 1) + " ");
System.out.println(GetTestScore(studNumber, 2) + " ");
System.out.println(GetTestScore(studNumber, 3) + " ");
}
double GetTestScore(int studNumber, int testNumber) {
if (testNumber == 1)
return (Test1Scores[studNumber - 1]);
else if (testNumber == 2)
return (Test2Scores[studNumber - 1]);
else if (testNumber == 3)
return (Test3Scores[studNumber - 1]);
return 0;
}
//calculate the average test score
double GetAverageScore(int studNumber) {
double avg = (Test1Scores[studNumber - 1] + Test2Scores[studNumber - 1] + Test3Scores[studNumber - 1]) / 3;
System.out.println("The average scores of student "+Names+" is:"+avg);
return avg;
}
void GetLetterGrades() {
for (int i = 1; i <= 6; i++) {
System.out.println("The letter grade of student " + (i) + " is: " + GetLetterGrade(i));
}
}
char GetLetterGrade(int studNumber) {
double sum = Test1Scores[studNumber - 1] + Test2Scores[studNumber - 1] + Test3Scores[studNumber - 1];
char letterGrade;
if (sum / 3 >= 90)
letterGrade = 'A';
else if (sum / 3 >= 80)
letterGrade = 'B';
else if (sum / 3 >= 70)
letterGrade = 'C';
else if (sum / 3 >= 60)
letterGrade = 'D';
else
letterGrade = 'F';
return letterGrade;
}
void GetClassAverage() {
double sum = 0.0;
for (int i = 0; i < 6; i++)
for (int j = 0; j < 3; j++)
sum += GetTestScore(i + 1, j + 1);
System.out.println("The average of the class is: " + sum / 18);
}
void GetTopGrade() {
char letterGrade;
double top = GetAverageScore(1);
for (int i = 2; i <= 6; i++)
if (GetAverageScore(i) > top)
top = GetAverageScore(i);
if (top >= 90)
letterGrade = 'A';
else if (top >= 80)
letterGrade = 'B';
else if (top >= 70)
letterGrade = 'C';
else if (top >= 60)
letterGrade = 'D';
else
letterGrade = 'F';
System.out.println("The top score of the class is: " + letterGrade);
}
}
import java.util.Scanner;
公营班级职系{
//保存学生姓名的数组
字符串[]名称=新字符串[6];
//用于保存学生字母成绩的数组
字符[]字母等级=新字符[6];
//用于保存每个学生考试分数的数组
double[]Test1Scores=新的double[6];
double[]Test2Scores=新的double[6];
double[]Test3Scores=新的double[6];
void EnterData(){
//初始化扫描仪以解析用户输入
扫描仪sc=新的扫描仪(System.in);
//初始化for循环并创建从0到6的迭代
对于(int i=0;i<6;i++){
//获取用户名
系统输出打印(“输入学生姓名”+(i+1)+“:”;
名称[i]=sc.next();
//创建一个while循环以获取每个学生的测试分数
做{
系统输出打印(“输入测试1的分数:”);
Test1Scores[i]=sc.nextDouble();
}而(Test1Scores[i]<0 | | Test1Scores[i]>100);
做{
系统输出打印(“输入测试2的分数:”);
Test2Scores[i]=sc.nextDouble();
}而(Test2Scores[i]<0 | | Test2Scores[i]>100);
做{
系统输出打印(“输入测试3的分数:”);
Test3Scores[i]=sc.nextDouble();
}而(Test3Scores[i]<0 | | Test3Scores[i]>100);
System.out.println(“Testscores:+Test1Scores[i]+“”+Test2Scores[i]+“”+Test3Scores[i]);
}
}
void GetNames(){
对于(int i=0;i<6;i++)
System.out.println((i+1)+“+GetName(i+1));
}
字符串GetName(int studNumber){
返回(名称[编号-1]);
}
//打印学生的3个测试分数
void GetTestScores(int studNumber){
System.out.println(GetTestScore(studNumber,1)+”);
System.out.println(GetTestScore(studNumber,2)+”);
System.out.println(GetTestScore(studNumber,3)+”);
}
双GetTestScore(int studNumber,int testNumber){
if(testNumber==1)
返回(Test1Scores[studNumber-1]);
else if(testNumber==2)
返回(Test2Scores[studNumber-1]);
else if(testNumber==3)
返回(Test3Scores[studNumber-1]);
返回0;
}
//计算平均考试分数
double GetAverageScore(int studNumber){
双平均=(Test1Scores[studNumber-1]+Test2Scores[studNumber-1]+Test3Scores[studNumber-1])/3;
System.out.println(“学生“+Names+”的平均分数为:“+avg”);
返回平均值;
}
void GetLetterGrades(){
对于(int i=1;i=90)
字母等级='A';
否则如果(总和/3>=80)
字母等级='B';
否则如果(总和/3>=70)
字母等级='C';
否则如果(总和/3>=60)
字母等级='D';
其他的
字母等级='F';
返回等级;
}
void GetClassAverage(){
双和=0.0;
对于(int i=0;i<6;i++)
对于(int j=0;j<3;j++)
sum+=GetTestScore(i+1,j+1);
System.out.println(“该类的平均值为:“+sum/18”);
}
void GetTopGrade(){
煤焦等级;
双顶=GetAverageScore(1);
对于(int i=2;i top)
top=平均得分(i);
如果(顶部>=90)
字母等级='A';
否则如果(顶部>=80)
字母等级='B';
否则如果(顶部>=70)
字母等级='C';
否则如果(顶部>=60)
字母等级='D';
其他的
字母等级='F';
System.out.println(“该课程的最高分为:“+letterGrade”);
}
}
要打印的是学生的姓名,但变量名是学生的数组类型
所以你要做的就是改变
System.out.println("The average scores of student "+Names+" is:"+avg);
进入
这。您要打印的是学生的姓名,但变量名是学生的数组类型 所以你要做的就是改变
System.out.println("The average scores of student "+Names+" is:"+avg);
进入
这是。在您提供的示例中,您打印的是数组本身,而不是数组中的值。您需要遍历数组“名称”,并分别打印每个值
for( int i = 0;i<Names.length;i++){
System.out.println(Names[i]);
}
for(int i=0;i在您提供的示例中,您打印的是数组本身,而不是数组中的值。您需要遍历数组“name”,并分别打印每个值
for( int i = 0;i<Names.length;i++){
System.out.println(Names[i]);
}
for(int i=0;i如果您想在字符串中打印学生姓名,例如学生a、b、c的平均分数为:100
您可以创建一个方法,通过在元素上迭代并在以下位置使用该方法来返回输入字符串数组的逗号分隔值:
“学生的平均分数”+csvStringMethod(Names)+”是:“+avg如果您想像学生a、b、c的平均分数是:100那样在字符串中打印学生的名字
您可以创建一个方法,通过在元素上迭代并在以下位置使用该方法来返回输入字符串数组的逗号分隔值:
“学生的平均分数”+csvStringMethod(Names)+”是:“+avg感谢您的帮助,但我能够让它与以下内容一起工作:
System.out.println("The average scores of student " + Names[studentNumber - 1] + " is:"+avg);
感谢您的帮助,但我能够让它与以下内容一起工作:
System.out.println("The average scores of student " + Names[studentNumber - 1] + " is:"+avg);
当我这样做时,它会打印名称,但我也会得到一个java.lang.ArrayIndexOutOfBoundsException通知,其中类的得分最高