Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要使用一个从主类到我创建的另一个类的变量_Java_Class_Variables - Fatal编程技术网

Java 我需要使用一个从主类到我创建的另一个类的变量

Java 我需要使用一个从主类到我创建的另一个类的变量,java,class,variables,Java,Class,Variables,我正在用java创建一个基于文本的游戏。在这个游戏中,我创建了一个名为“name”的变量,这个变量有一个用户输入的字符串 System.out.println("You chose to play, welcome to the game!"); System.out.println("You can choose your name now!"); System.out.print("My name is -->

我正在用java创建一个基于文本的游戏。在这个游戏中,我创建了一个名为“name”的变量,这个变量有一个用户输入的字符串

System.out.println("You chose to play, welcome to the game!");
      System.out.println("You can choose your name now!");
      System.out.print("My name is --> ");
      input.nextLine(); 
      String name = input.nextLine();
      System.out.println("Are you sure your name is " + name + "?");
      System.out.println("1. Yes, that is my name. Time to move on...");
      System.out.println("2. No, that isn't my name...");
      int u = 2;
      u = input.nextInt();
        while (u == 2){
          System.out.println("Then let's change your name!");
          System.out.println("What is your new name?");
          input.nextLine(); 
          name = input.nextLine();
          System.out.println("Are you sure your name is " + name + "?");
          System.out.println("1. Yes, that is my name. Time to move on...");
          System.out.println("2. No, that isn't my name...");
          u = input.nextInt();
        }
所以我想在字符类中使用变量“name”,如下所示

class Character{
  public static void full_stats(){
    System.out.println("This is your name" + name);
  }
}

向方法添加一个参数

class Character{
  public static void full_stats(String name){
    System.out.println("This is your name" + name);
  }
}

按你现在的方式,你不能

有两种方法我可以在脑海里想出来:

将名称声明为类级别变量:

static String name;
public static void main(String[]args ) {
 //.. other code
 name = setYourName();
 //..
 Character.full_stats();
}


class Character{
  public static void full_stats(){
    System.out.println("This is your name" + Main.name);
  }
}
更好的方法是将名称作为参数传递:

class Character{
  public static void full_stats(String name){
    System.out.println("This is your name" + name);
  }
}

public static void main(String[]args ) {
 //.. other code
 String name = setYourName();
 //..
 Character.full_stats(name);
}
不过,我建议在主方法/类中保留尽可能少的代码。它只是一个入口点,而不是整个应用程序


另外:遵循标准命名约定将使您的代码更容易维护/被未编写代码的人遵循。

正确的设计是将
名称
设置为
字符
字段。然后在主类中创建
Character
的实例,并通过相应的setter为
name
字段提供一个值,将用户输入作为参数传递给setter。在Character类中创建一个name字段。然后将名称传递到字符构造函数中。您可能想将您的类重命名为GameChar或其他名称,因为如果您想使用java中的普通字符类,这可能会导致奇怪的错误。非常感谢,这回答了我的问题。抱歉这么晚才回复,我把问题放在溢出上,离开了电脑,因为我必须去某个地方。@the_Red_Baron如果这回答了你的问题,你能把答案标记为“已接受”吗?