- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个简单的java项目。该项目是一个为教师编写的程序,他想要输入学生的成绩(每个学生三个成绩),具有五个私有(private)属性 name
、grade1
、grade2
、grade3
和 average
以及三个方法:readGrades()
、GetAverage(
) 和 getName()
。我但是他们所有人,但我的问题是,无论我做什么,输出总是给我我输入的最新学生的平均值,而不是最高的。我还应该打印他的名字而不是平均值。有人告诉我使用 ArrayList 但说实话我不知道怎么做?所以如果有人能帮助我,我将不胜感激。这就是我到目前为止所拥有的
import java.util.Scanner;
class Student {
private String name;
private int grade1, grade2, grade3;
private double average;
void Setgrade1(int g1) {
grade1 = g1;
}
void Setgrade2(int g2) {
grade2 = g2;
}
void Setgrade3(int g3) {
grade3 = g3;
}
int Getgrade1() {
return grade1;
}
int Getgrade2() {
return grade2;
}
int Getgrade3() {
return grade3;
}
int readGrades() { //method that reads grades.
Scanner input = new Scanner(System.in);
int g1, g2, g3;
String name;
char choice;
do {
System.out.println(" --Please enter the student name: ");
name = input.next();
SetName(name);
System.out.println(" --Please enter the first grade: ");
g1 = input.nextInt();
Setgrade1(g1);
System.out.println(" --Please enter the the second grade: ");
g2 = input.nextInt();
Setgrade2(g2);
System.out.println(" --Please enter the the third grade: ");
g3 = input.nextInt();
Setgrade3(g3);
System.out.println(" Do you want to continue? enter the number ");
System.out.println(" 1- YES 2- NO ");
choice = input.next().charAt(0);
}
while (choice != '2');
return choice;
}
void SetAverage(double avr) {
average = avr;
}
double GetAverage() {
average = (grade1 + grade2 + grade3) / 3;
return average;
}
void SetName(String name1) {
name = name1;
}
String getName() {
return name;
}
}
public class TestStudent1 {
public static void main(String args[]) {
Student student = new Student();
student.readGrades();
student.GetAverage();
double i = 0;
double average = student.GetAverage();
if (i < average) {
i = average;
System.out.println("THE HIGHEST AVG :" + i);
}
}
}
最佳答案
您的代码中存在以下几个问题:
1)它为您提供最新学生的输出是因为您一直在修改单个对象,因为您输入更多成绩和姓名的逻辑位于学生本身内部,而应该在学生本身内部。
2) 要获取名称而不是平均值,您应该在打印时调用 getName。
3) 要处理多个学生,您可以在 main
方法中去掉询问您想继续
的逻辑,并在 main
方法中创建学生的 ArrayList
来处理多个学生对象,或者您也可以使用其他集合来执行此操作,如
List<Student> students = new ArrayList<>();
从这里循环并使用 students.add(studentObj)
将学生对象添加到列表中。
然后使用 getAverage 比较学生对象的平均数,并从列表中找到平均数最高的学生并打印出来,以获得最高的学生对象的平均数。
这样就可以了。尝试其中一些,如果您遇到困难,请告诉我们。
关于java - 我怎样才能找到平均分最高的学生的名字? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53560081/
古今中外,人其实最珍惜自己的姓名,分量可谓举足轻重,几乎构成一个人最重要的人生价值载体,同理,一个网站的标题也就像网站的名字一样,标题的定性决定着这个网站的路怎么走,SEO的工作将会围绕着这些进行展
我需要强制执行 LASTNAME/FIRSTNAME Something like Smith/John 这种模式。 字符可以是字母数字(小写/大写)也包括特殊字符,如 ë 等。 图案: 基本上规
我有两个字段:first 和 last 我正在尝试使用 multi_match模糊匹配全名: "multi_match": { "query": name, "fields": [
国王i | 王妃i 青梅。 | 竹马。 我要逆天 | 我要爆炸 以前呢i | 后来呢i 抱紧我i | 深吻我i 心悦 | 钟意 依赖 | 共生 阿怪i | 阿乖i 花岛丶 | 草浅丶
我是Delphi的新手。每次运行事物时,都会出现此错误: adoquery1:未找到参数“名字” procedure TForm1.Button1Click(Sender: TObject); beg
我是 Akka 新手,我正在尝试制作一个简单的项目,即有鱼的水族馆。问题是我不知道如何获取我在这一行中声明的 Actor 的名字 final ActorRef fish1 = system.actor
以下是要求:我。如果有名字、中间名和姓氏,则仅显示名字和姓氏二.如果有第一个和最后一个,则显示第一个和最后一个三.如果只有名字,则直接显示 我有以下代码: String fullName = "fir
我使用此 PHP 正则表达式来检查字段是否包含名称(至少包含名字/姓氏,然后是可选的其他中间名或缩写)的 true/false。 $success = preg_match("/([\x{00c0}-
当使用 django allauth 进行社交帐户注册时,allauth 自动将用户名定义为从 3rdparty 获取的 first_name。因此,例如:如果 facebooks John Cucu
我想尝试在 Javascript 中检测一个人名字的不同部分,并将它们剪掉,以便我可以将它们传递给其他东西。 名称可以以任何格式出现——例如:- 维多利亚·米·莱恩小姐 Victoria C J Lo
这是我读过的教程中的查询 CREATE TABLE Employee ( id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, depa
我从包含用户名的文本框中输入了用户输入 输入可以如下所示: var input = "Doe, John M"; 但是,输入可能要复杂得多。像: var input = "Doe Sr, John M
在 Javascript 中,我尝试将全名(名字、中间名和姓氏)输入到字段中,单击提交按钮后将输出到三个单独的字段:字符长度、中间名和 3缩写。到目前为止,我已经到达字符字段,但我对如何获取两个空格之
我尝试通过 java 解析 XML DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder
formatName 方法应该接受名为 name 的字符串,其中包含格式为“First Last”的名称。你可能会认为字符串中只有一个空格。该方法应该创建并返回一个包含名称的字符串格式为“最后,第一个
我是 node.js 的新手。我正在尝试创建一个注册页面并使用 mysql 将输入的值保存在数据库中。 我可以通过在请求 header 上传递参数来做到这一点。但是,在请求 header 中传递参数始
我需要一个函数来根据以下字段检查重复条目:first_name、last_name 和 tel我尝试过浏览论坛,但似乎找不到帮助。 prepare($sql); $stmt->bind_param('
我有下表: First Name Bryce Marcellin Caroline Kerry Roberto Mary Carol Warren Bonnie Terry L
所以我制作了一个代码让用户输入他们的名字和姓氏;然后交换两个位置。 例如。 Bulota Babi 成为 Babi, Bulota 这是我的代码 public class trial { pu
我想知道你是否有两列让我们说 first name. last name. 您在数据库中存储的内容。 您能否在数据库中创建一个“动态”列“全名”,自动根据名字和姓氏创建姓名? firstname
我是一名优秀的程序员,十分优秀!