gpt4 book ai didi

Java - 当从另一个方法创建对象时,尝试从主方法中打印对象的 get 方法

转载 作者:行者123 更新时间:2023-12-02 10:46:57 25 4
gpt4 key购买 nike

我已经查看了有关从 main 方法访问对象实例的所有其他 stackoverflow 问题,但我尝试过的任何方法都不起作用,我仍然继续收到以下错误消息

java.59: error: cannot find symbol
System.out.println(student2.getStudentId());

这是我的主要方法:

import java.util.Scanner;
import java.io.*;
import java.util.Arrays;

public class Testing {

public static void main (String [] args) throws IOException {


final String INPUT_FILE = "c:\\Users\\XXXXXX\\Documents\\Input01.txt";
Scanner br = new Scanner(new File(INPUT_FILE));

// Test 2 - Test first and second line of information from input file

String[] strArray;
while (br.hasNext()) {
strArray = br.nextLine().split(",");
if(strArray[0].equals("STUDENT")) {
processStudentData(strArray);
System.out.println(student2.getStudentId());
}
else
if(strArray[0].equals("GRADE ITEM")) {
processGradeItemData(strArray);
}

}

} //end main

// ***************************************************************

// Uses string array from input file to create new student object
public static void processStudentData(String[] a) {

System.out.println("Running Test 2a:");
if (a[1].equals("ADD")) {
Student student2 = new Student(a[2], a[3], a[4], a[5]);
}

} // End processStudentData

} //end Testing

这是我的学生类(class)精简版:

public class Student {  

private String studentId; // Unique ID for each Student
private String studentFirstName; // Student's legal first name
private String studentLastName; // Student's legal last name
private String studentEmail; // Student's school email address

//************************************************************************

Student() {

} // end Student

//************************************************************************

public Student(String studentId, String studentFirstName, String studentLastName,
String studentEmail) {

if (studentId.equals("")) {
throw new IllegalArgumentException("Student ID cannot be blank.");
}
if (studentFirstName.equals("")) {
throw new IllegalArgumentException("Student first name cannot be blank.");
}
if (studentLastName.equals("")) {
throw new IllegalArgumentException("Student last name cannot be blank.");
}
if (studentEmail.equals("")) {
throw new IllegalArgumentException("Student email cannot be blank.");
}
if (!studentEmail.contains("@")) {
throw new IllegalArgumentException("Student email must have '@'.");
}

this.studentId = studentId;
this.studentFirstName = studentFirstName;
this.studentLastName = studentLastName;
this.studentEmail = studentEmail;

} // end Student

//************************************************************************

public String getStudentId() {

return studentId;

} // end getStudentId

我需要能够使用主方法中的 get 方法打印出学生信息,但仍然通过 processStudentData 方法实例化 Student2 对象。我不想将 get 方法更改为静态,因为会有多个实例。

任何帮助将不胜感激。

更新:我已经添加了对 processStudentData 方法的返回,但仍然收到与以前相同的错误(主要方法没有更改,下面更新了 processStudentData 方法):

public static Student processStudentData(String[] a){
System.out.println("Running Test 2a:");
if (a[1].equals("ADD")) {
Student student2 = new Student(a[2], a[3], a[4], a[5]);
return student2;
}
return null;
}

最佳答案

由于 student2 被定义为 processStudentDataif 语句中的局部变量,因此它只能在该上下文中使用(其定义)

// Uses string array from input file to create new student object
public static void processStudentData(String[] a) {

System.out.println("Running Test 2a:");
if (a[1].equals("ADD")) {
Student student2 = new Student(a[2], a[3], a[4], a[5]);
}

} // End processStudentData

“一个”解决方案是将结果返回给调用者......

// Uses string array from input file to create new student object
public static Student processStudentData(String[] a) {

System.out.println("Running Test 2a:");
if (a[1].equals("ADD")) {
return new Student(a[2], a[3], a[4], a[5]);
}

return null;

} // End processStudentData

然后你可以使用它,比如......

Student student = processStudentData(strArray);
if (student != null) {
System.out.println(student.getStudentId());
}

您可能想仔细看看:

了解更多详情

关于Java - 当从另一个方法创建对象时,尝试从主方法中打印对象的 get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52472490/

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