gpt4 book ai didi

java - 使用扫描仪为另一个类中的变量赋值?

转载 作者:行者123 更新时间:2023-12-02 01:00:56 29 4
gpt4 key购买 nike

我正在尝试使用用户的输入为另一个类中的变量分配一个值。我的目标是使用在次要类,但我不断收到错误“无法解析符号 fullName”。我认为这可能是因为另一个类中的变量是私有(private)的,但我编辑了对公共(public)的可见性,但这没有改变任何东西。我怎样才能做到这一点?

这是我的代码:

public class Main{

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
System.out.println("Enter your full name:\n");
fullName = scan.nextLine();
}
}

// Secondary class
public class Person {

private int id;
private String fullName;

// Constructor
public Person(String fullName, String id){

}

// Setters
public static void setName(String fullName){
this.fullName = fullName;
}

public static void setid(int id){
this.id = id;
}

//getters
public String getfullName(){
return fullName;
}

public int getid(){
return id;
}

最佳答案

您收到的错误是因为在 Main 类中,您没有声明 fullName。阅读有关变量作用域的内容以了解有关此内容的更多信息(直观上,您在类 Person 中定义的 fullName 在其他类 Main 中是不可见的,因为它被声明为私有(private),因为它应该是)。

解决方案非常简单:

  1. 在主类中将 fullName 定义为 String,
  2. 创建 Person 的实例,例如 person,然后
  3. 使用您读取的 fullName 值调用 person.setName(fullName); 方法(不得是静态的)。

以下是此解决方案的代码:

public class Main{

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
System.out.println("Enter your full name:\n");
String fullName = scan.nextLine();
Person person = new Person();
person.setName(fullName);
}
}

// Secondary class
public class Person {

private int id;
private String fullName;

// Constructor
public Person(String fullName, String id){
this.id = id;
this.fullName = fullName;
}

public Person(){
}

// Setters
public void setName(String fullName){
this.fullName = fullName;
}

public void setid(int id){
this.id = id;
}

//getters
public String getfullName(){
return fullName;
}

public int getid(){
return id;
}
}

另一种选择是添加一个仅采用一个参数 (String fullName) 的新构造函数,并直接创建一个 Person 实例,如 Person person = new Person(fullName);

关于java - 使用扫描仪为另一个类中的变量赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60650444/

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