我可以将用户输入从一个程序包拉到另一个程序包吗?

时间:2019-01-10 04:51:22

标签: java

好的,所以我还是Java的新手,有些事情我不太了解。我在Sublime 3中使用了所有Java,并且不使用IDE,因此必须手动创建所有内容(这可能是为什么我无法使其正常工作的原因)。这是我的代码:

package charactername;

import java.util.*;
import java.io.*;
import java.util.Scanner.*;
import java.lang.Object.*;

public class UserNameInput {

  public static void main(String[] args){

    String playerNameF;
    String playerNameL;
    String checking;
    boolean valid = true;

    Scanner in = new Scanner(System.in);

    while(valid){
    System.out.println("Enter the first name of your character here: ");

    playerNameF = in.nextLine();

    System.out.println("Enter the last name of your character here:");

    playerNameL = in.nextLine();

    System.out.println("Your character name will be: \n" + playerNameF + " " + playerNameL + "\nIs this correct? y/n");

    checking = in.nextLine();
    if(checking.equals("n") || checking.equals("no")){
      System.out.println("Please re-enter your information and try again.");
    }else if(checking.equals("y") || checking.equals("yes")){
      System.out.println("Good luck in game!");
      break;
    }else{
      System.out.println("Sorry, I didn't quite understand your input. Please re-enter your information and try again.");
      valid = true;
      }
    }
  }
}

我可以使用playerNameL吗?完全分开的包中的playerNameF?

package gameintroduction.UserRegistration;

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

  public class GettingStarted {
    public static void main(String[] args){

      UserNameInput cName = new UserNameInput();
      cName.playerNameF();
    }
  }

我正在尝试将其拉入此处,但它说该包装不存在。进口范围有限制吗? UserNameInput确实可以编译和运行,即使其难看!

1 个答案:

答案 0 :(得分:0)

您在playerNameF内声明main(),这意味着此变量的作用域在main()类的UserNameInput内部。为了在其他类中使用它,将这些变量作为带有公共访问说明符的实例变量,如下所示。此外,不要在UserNameInput类中使用main(),而要使用实例方法userInput()并将所有您的main()内部的逻辑。

public class UserNameInput {
    public String playerNameF;
    public String playerNameL;
    public String checking;     

    public void userInput(){
        // your logic from main() comes here

    }
}

现在您可以UserNameInput cName = new UserNameInput();cName.playerNameF;了 现在,您可以从其他main()调用它,如下所示:

public class GettingStarted {
    public static void main(String[] args){

      UserNameInput cName = new UserNameInput();
      cName.userInput();
    }
  }

您还可以使用cName.playerNameFcName.playerNameL

访问变量