gpt4 book ai didi

java - 有没有一种方法可以将多个变量添加到一个对象?

转载 作者:行者123 更新时间:2023-12-02 01:33:04 26 4
gpt4 key购买 nike

所以我已经得到了下面的方法,并且不允许我更改它。我需要的是用下面的变量创建几个对象,但不断出现错误,提示“构造函数菜单(int,String,String)未定义”。我做错了什么吗?

      import java.util.Scanner;
import java.util.*;

public class menu {

private static void addNewStudent()
{
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter the correct details below");
System.out.println("ID: ");
int userId = scanner.nextInt();

System.out.println("First name: ");
String userFirst = scanner.next();

System.out.println("Last name: ");
String userLast = scanner.next();

System.out.println("English assignment 1 mark: ");
int english1 = scanner.nextInt();

System.out.println("English assignment 2 mark: ");
int english2 = scanner.nextInt();

System.out.println("English assignment 3 mark: ");
int english3 = scanner.nextInt();

System.out.println("Math assignment 1 mark: ");
int math1 = scanner.nextInt();

System.out.println("Math assignment 2 mark: ");
int math2 = scanner.nextInt();;

System.out.println("Math assignment 3 mark: ");
int math3 = scanner.nextInt();

menu userStudentObj = new menu(userId, userFirst, userLast);
menu userEnglishObj = new menu(english1, english2, english3);
menu userMathObj = new menu(math1, math2, math3);


// Asks the user for the student information (ID, First, Last, Assignments)
// Then creates the appropriate objects and adds the students to the student list

如果有意义的话,我希望创建 3 个新对象,其中包含对象内的用户输入变量。

最佳答案

主要问题是您没有指定任何非默认构造函数来创建对象,因此编译器不知道如果未指定对象,您要创建什么。但还有另一个问题。您的对象的设计方式不是最好的。因此,如果您想正确处理它,您可以更改类设计,以便以正确的方式处理它。

例如,您可以让它有点不同,就像这个例子一样(它并不完美,它仍然可以更加独立和更好的设计):

class User {
int userId;
String userFirstName;
String userSecondName;

private ArrayList<Integer> mathSums = new ArrayList<>();
private ArrayList<Integer> englishSums = new ArrayList<>();

User(int userId, String userFirstName, String userSecondName) {
this.userId = userId;
this.userFirstName = userFirstName;
this.userSecondName = userSecondName;
}

public void addMathSums(int mathSums) {
this.mathSums.add(mathSums);
}

public void addEnglishSums(int englishSums) {
this.englishSums.add(englishSums);
}
}

因此,在此类的帮助下,您可以更改定义和设置对象值的方式,它看起来像这样:

1)您可以使用参数定义构造函数,以便可以使用它来创建对象:

 User user = new User(userId, userFirst, userLast);

2) 然后,您可以将总和添加到 User 类中作为成员变量(字段)的 ArrayList 中:

user.addMathSums(math1);
user.addMathSums(math2);
user.addMathSums(math3);
user.addEnglishSums(english1);
user.addEnglishSums(english2);
user.addEnglishSums(english3);

它可以使用数组、列表或其他数据结构以不同的方式执行,但您确实需要注意您的类设计。您花更多的时间来设计对象,减少稍后需要的修改。

3) 您可能想与该对象进行交互,因此您需要以某种方式获取它的引用。您可以更改方法签名,以便在完成输入后“返回”创建的对象。所以你需要做一些改变:

在方法上将签名返回类型更改为 User:

private static User addNewStudent() { ... }

然后添加返回并返回创建的用户:

private static User addNewStudent() {
/* code */

User user = new User(userId, userFirst, userLast);
/* add sums */

return user;
}

4) 在 main() 中使用此方法:

public static void main(String[] args) {
User createdUser = User.addNewStudent();
}

关于java - 有没有一种方法可以将多个变量添加到一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57543560/

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