我一直在试图破坏我的脑子好几天。 我需要创建一个方法,通过keybaord请求用户输入。 我把它写成了
private static String getFromUser(String question){
String s = " ";
System.out.print(question);
while(in.hasNext()){
s = in.next();
//return s;
}
return s;
}
或
private static String getFromUser(String question){
String s;
System.out.print(question);
s = in.nextLine();
return s;
}
无论其 当我“取消注释”骨架代码时:
public static void create() {
in = new Scanner(System.in);
String name = "";
String address = "";
//ask the user for the name and address of the company receiving the invoice
//String name = getFromUser("name of company to invoice"); // ******TASK ONE******
//String address = getAddress(); // ******TASK TWO******
它一直声明:“变量名已在方法create()中定义”。但是我不允许更改已经编写的代码。 HENCE,我只允许删除“//”注释行。 我只是返回一个字符串或者我是否需要使用方法重载(我不完全理解方法重载,tbh)。 请建议或给出提示。非常感谢你。
答案 0 :(得分:4)
您已在同一方法范围内定义了两次变量,您需要做的是删除变量的第二个声明,如:
String name = "";
String address = "";
// here don't declare the variable again, just use it like
name = getFromUser("name of company to invoice");
address = getAddress();
答案 1 :(得分:0)
如果您已在此处声明变量:
String name = getFromUser("name of company to invoice");
然后你不需要 在这里声明:
String name = "";
删除较短的一个。
您可以在一行上声明它,然后再使用它:
String name = "";
name = getFromUser("name of company to invoice");
或在一行(你已经做过)上做两件事:
String name = getFromUser("name of company to invoice");
但是你不能在相同的范围内两次声明相同的变量。
答案 2 :(得分:0)
另外两个答案是正确的,因为您无法在单个方法的范围内定义两次变量。你被允许评论出来吗?例如。你可以像这样注释掉初始定义。
setMaximumFractionDigits
然后在准备好使用任务2时对地址执行相同的操作。
如果不允许这样做,那么你将不得不接近你的教师(假设这是一堂课),并表明这是不可能的。
答案 3 :(得分:-1)
我宁愿使用Scanner
类。使它看起来更干净:
private static String getAnswerFromUser(String question){
Scanner input = new Scanner(System.in);
System.out.println("Question: " + question);
System.out.print("Answer: ");
String answer = input.next();
return answer;
}