英文:
The object that I created of the class for para constructer is showing a error. The error that I am getting is that that the symbol cant be found
问题
import java.util.*;
public class StudentMain {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter Student's Id:");
int Id = scan.nextInt();
scan.nextLine();
System.out.println("Enter Student's Name:");
String Name = scan.nextLine();
System.out.println("Enter the Student's address");
String Address = scan.nextLine();
System.out.println("Whether the student is from NIT(Yes/No):");
String option = scan.nextLine();
Student stu = null; // Declare 'stu' outside if-else block
if (option.equals("YES")) {
stu = new Student(Id, Name, Address);
} else if (option.equals("NO")) {
System.out.println("Enter the college name:");
String collName = scan.nextLine();
stu = new Student(Id, Name, Address, collName);
}
System.out.println("Student id:" + stu.getStudentId());
System.out.println("Student name:" + stu.getStudentName());
System.out.println("Address:" + stu.getStudentAddress());
System.out.println("College Name:" + stu.getCollegeName()); // Corrected 'collegeName'
}
static class Student { // Added 'static' keyword to the nested class
private int studentId;
private String studentName;
private String studentAddress;
private String collegeName;
public Student(int Id, String Name, String Address) {
this.studentId = Id;
this.studentName = Name;
this.studentAddress = Address;
collegeName = "NIT";
}
public Student(int Id, String Name, String Address, String collName) {
this.studentId = Id;
this.studentName = Name;
this.studentAddress = Address;
this.collegeName = collName;
}
public int getStudentId() {
return studentId;
}
public String getStudentName() {
return studentName;
}
public String getStudentAddress() {
return studentAddress;
}
public String getCollegeName() {
return collegeName;
}
}
}
Note: The code provided above is the corrected version of the code you provided. I've made necessary adjustments to fix the issues you mentioned in the provided code.
英文:
import java.util.*;
public class StudentMain{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("Enter Student's Id:");
int Id=scan.nextInt();
scan.nextLine();
System.out.println("Enter Student's Name:");
String Name=scan.nextLine();
System.out.println("Enter the Student's address");
String Address=scan.nextLine();
System.out.println("Whether the student is from NIT(Yes/No):");
String option=scan.nextLine();
if(option.equals("YES")){
Student stu = new Student(Id,Name,Address);
}
else if (option.equals("NO")){
System.out.println("Enter the college name:");
String collName=scan.nextLine();
Student stu= new Student(Id,Name,Address,collName);
}
System.out.println("Student id:" + stu.getStudentId());
System.out.println("Student name:" + stu.getStudentName());
System.out.println("Address:"+ stu.getStudentAddress );
System.out.println("College Name:" +stu.collegeName);
This is where the error is coming in doing stu.getStudentName(), stu.getStudentAddress(), stu.getStudentId() and stu.CollegeName()
}
class Student {
private int studentId;
private String studentName;
private String studentAddress;
private String collegeName;
public Student(int Id,String Name,String Address)
{
this.studentId=Id;
this.studentName=Name;
this.studentAddress=Address;
collegeName="NIT";
}
public Student(int Id,String Name,String Address,String collName)
{
this.studentId=Id;
this.studentName=Name;
this.studentAddress=Address;
this.collegeName=collName;
}
public int getStudentId()
{
return studentId;
}
public String getStudentName()
{
return studentName;
}
public String getStudentAddress()
{
return studentAddress;
}
public String getCollegeName()
{
return collegeName;
}
}}
The error that I am getting is " Student stu= new Student(Id,Name,Address,collName); " non static variable this cannot be refernced from static context
and
stu.getStudentId() in the print statement is cannot find symbol
I am not able to understand why is this error occuring and how to fix it.
答案1
得分: 1
如果你想让 'stu' 可用,它必须在与使用它的代码块中声明,或者在包围它的代码块中声明。基本上,你在这里(以及上面的代码片段中)创建并立即销毁了 'stu'。
if(option.equals("YES")){
...{
System.out.println("请输入学院名称:");
String collName = scan.nextLine();
Student stu = new Student(Id, Name, Address, collName);
}
System.out.println("学生 ID:" + stu.getStudentId());
}
英文:
If you want 'stu' to be available it has to be declared in the same block where it's used, or one which encloses it. Basically, you create and instantly destroy 'stu' here (and in the bit above).
if(option.equals("YES")){
...{
System.out.println("Enter the college name:");
String collName=scan.nextLine();
Student stu= new Student(Id,Name,Address,collName);
}
System.out.println("Student id:" + stu.getStudentId());
答案2
得分: 0
你在这两行代码中缺少了括号 () :
System.out.println("Address:" + stu.getStudentAddress());
System.out.println("College Name:" + stu.getCollegeName());
英文:
You are missing parenthesis () in these two lines:
System.out.println("Address:"+ stu.getStudentAddress );
System.out.println("College Name:" +stu.collegeName);
it should look like
System.out.println("Address:"+ stu.getStudentAddress());
System.out.println("College Name:" +stu.getCollegeName());
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论