Java 通过扫描仪输入使用类、参数和对象

Java 通过扫描仪输入使用类、参数和对象,java,Java,我有一个类City.java和State.java,其中包含自动生成的构造函数、getter和setter(如果需要,我可以将它们添加到问题中) 在Main.java中,我的任务是使用Scanner作为输入获取信息,并使用写入的所有信息创建对象 每个对象的数据输入需要在单独的方法中取出,这些方法最终将从主方法调用。每个方法都必须返回填充的对象。它只允许类扫描仪的一个对象 public Class City { private String name; private Bigdeci

我有一个类City.java和State.java,其中包含自动生成的构造函数、getter和setter(如果需要,我可以将它们添加到问题中)

Main.java
中,我的任务是使用
Scanner
作为输入获取信息,并使用写入的所有信息创建对象

每个对象的数据输入需要在单独的方法中取出,这些方法最终将从主方法调用。每个方法都必须返回填充的对象。它只允许类
扫描仪
的一个对象

public Class City { 
   private String name;
   private Bigdecimal surface;
   //+constructor , + getters and setters
}
public Class State {
   private String name;
   private City city;
 //+constructor , + getters and setters
}

public class Main {

    public static City city (Scanner scanner) {
       System.out.println("Store City name : ");
       String cityName = scanner.nextLine();
       System.out.println("Store City surface : ");
       BigDecimal citySurface = scanner.nextBigDecimal();

    return new City(cityName,citySurface);
    }

    public static State state (Scanner scanner){
      System.out.println("Store State name : ");
      String stateName = scanner.nextLine();
我在这一点上迷路了。任务是我应该返回新的 使用参数(stateName,City)表示状态,但我无法理解 如何将先前输入的城市作为参数传递到此处

      }


  public static void main(String[] args) {
    Scanner mainScanner = new Scanner (System.in);
  }
}
你可以试试这个:

public class Main {

  public static City city (Scanner scanner) {
   System.out.println("Store City name : ");
   String cityName = scanner.nextLine();
   System.out.println("Store City surface : ");
   BigDecimal citySurface = scanner.nextBigDecimal();

   return new City(cityName,citySurface);
  }

  public static State state (Scanner scanner, City city){
    System.out.println("Store State name : ");
    String stateName = scanner.nextLine();
    //Do stuff here with city e.g. city.getName()
    return new State(stateName, city);
  }

  public static void main(String[] args) {
    Scanner mainScanner = new Scanner (System.in);
    City myCity = city(scanner);
    state(mainScanner, myCity);
    //I'm sure you could also do this code in shorthand like below because of the callstack order.
    //state(mainScanner, city(scanner));
  }

}

您只需要将city对象传递给state,然后处理一旦拥有它就应该发生的代码。老实说,我不认为在主类中应该有这些方法,它们是静态的,但是这完全是另一个问题。

也许你可以调用
city
,然后将其
City
结果作为一个附加参数传递给
state
方法?这不是一个答案,而是一个建议:你应该像这样明确地给你的方法加前缀
public static City askCity(Scanner Scanner)
,以免以后被你自己的代码弄糊涂。如果我的答案不正确。你至少可以发表评论并说明原因,而不只是投反对票。我同意你的评论。您可能忘记编写
返回新状态(statename,city)在state()方法中。@WholeBrain啊,是的,我明白你的意思。这并不是我忘记了,更像是我暗示它会出现在那一部分,在我写的注释中,
//在这里用city做一些事情,例如city.getName()
,但我知道如果把它加进去会更好。我会根据您的反馈修改,谢谢。