gpt4 book ai didi

java - 需要帮助将用户输入分配到递增的字符串数组中

转载 作者:行者123 更新时间:2023-11-30 04:28:46 25 4
gpt4 key购买 nike

基本上我总体上想做的是:

你的一位教授听说了你新兴的编程专业知识,并要求你写一篇单曲可用于帮助他们评分的程序。教授给出了三门50分的考试一次期末考试,满分 100 分。您的程序将提示用户输入学生的姓名,输入为名字 姓氏(即鲍勃·史密斯)、学生的 3 次考试成绩和 1 次期末考试成绩(全部全部数字)。类(class)规模因学期而异,但 100 人为上限(声明为常量)。

在进行任何计算或显示任何输出之前,请阅读所有学生的信息。核实3 次考试分数在 0-50 分之间,期末考试分数在 0-100 分之间。将最小值和最大值声明为常数,以便可以根据需要轻松更新它们。如果无效,显示错误消息并允许用户重新输入该无效分数。读取所有学生信息后in,以 LASTNAME、FIRSTNAME(全部大写)的格式显示每个学生的姓名、学生的姓名考试百分比(所有考试的总和加上期末考试/可能的总分)精确到小数点后 1 以及学生的最终成绩。

但是我无法弄清楚如何将用户输入分配到一个数组中(或者可能因为名字和姓氏而分配两个数组?),但我很迷失该怎么做,这就是我现在所拥有的:

import java.util.*;
import java.text.*;


public class Proj4 {
public static void main(String[] args){
Scanner s= new Scanner(System.in);
String input;
String again = "y";

int [] exams = new int[4];
int student = 1;

do
{

String [] names = new String[student];
System.out.print("PLease enter the name of student " + student + ": " );
names[student-1] = s.nextLine();
for ( int i = 0; i < exams.length; i++){
if(i==3){
System.out.print("Please enter score for Final Exam: ");
exams[i] = s.nextInt();
}
else{
System.out.print("Please enter score for Exam " + (i+1) + ": ");
exams[i] = s.nextInt();

if((exams[0]<0||exams[0]>50)||(exams[1]<0||exams[1]>50)||(exams[2]<0||exams[2]>50)){
System.out.println("Invalid enter 0-50 only...");
System.out.print("Please re-enter score: ");
exams[i] = s.nextInt();
}
else if(exams[3]<0||exams[3]>100){
System.out.println("Invalid enter 0-100 only...");
System.out.print("Please re-enter score: ");
exams[i] = s.nextInt();
}
}
}
System.out.print("do you wish to enter another? (y or n) ");
again = s.nextLine();
if(again!="y")
student++;
}while (again.equalsIgnoreCase ("y"));
}
}

如果我的代码还有其他问题,请提供帮助也很棒。

最佳答案

首先声明需求指定的常量:

final int MAX_STUDENTS = 100; 
final int MIN_EXAM = 0;
final int MAX_EXAM = 50;
final int MIN_FINAL = 0;
final int MAX_FINAL = 100.

然后,由于只允许使用数组,因此声明两个数组。一个将保存学生姓名,另一个将保存考试成绩。因此,它们将具有不同的类型。将 String 数组初始化为最大学生数。将测试成绩数组初始化为 4 * MAX_STUDENTS,因为每个学生将有 4 个考试成绩:

String[] student_names = new String[MAX_STUDENTS];
int[] exam_scores = new int[MAX_STUDENTS * 4];

当你读入一个新学生时,将他/她的名字放入student_names数组的新索引中。然后,当您读取每个后续​​测试分数(3 次考试,1 次期末考试)时,逐渐填充 exam_scores 数组。

当您要打印分数时,请保留一个变量来跟踪打印的 exam_scores 数组的最后一个索引。这样,当您转到另一个学生时(当您迭代数组时),您就知道在 exam_scores 数组中离开的位置。

还有其他(更好的)方法可以做到这一点(例如,使用列表是最好的,但即使使用数组,你也可以比这更奇特)。我不确定到目前为止您学到了什么,因此选择了最基本的方法来实现该程序。

关于java - 需要帮助将用户输入分配到递增的字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15150764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com