如何创建存储用户输入的java方法?

时间:2015-11-16 13:34:02

标签: java variables methods static-methods naming

我一直在试图破坏我的脑子好几天。 我需要创建一个方法,通过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)。 请建议或给出提示。非常感谢你。

4 个答案:

答案 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;
}