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