【问题标题】:Java, returning Strings errorJava,返回字符串错误
【发布时间】:2013-12-17 08:03:19
【问题描述】:

我对编程很陌生,而且还很年轻。

我没有可以帮助我的朋友/家人,所以我在互联网上寻求帮助。我的代码有问题,因为它没有按我的预期工作。

它没有打印出变量“TheChoice”的内容,而是结束了。

这不是所有的代码,我已经对其进行了精简,以便更容易阅读,也许更多的人将能够快速回答。

但是,这绝对是我搞砸的代码部分)。

public String Choices(String value1, String value2)
{
  Scanner x = new Scanner(System.in);
  if(x.next() == value1){return value1;}
  if(x.next() == value2){return value2;}
}


// Separate class...

ChoiceClass Object1 = new ChoiceClass();
String TheChoice = Object1.Choices("Ham", "Cheese");
System.out.println(TheChoice);

【问题讨论】:

  • 不要使用==比较字符串的内容。使用equals()。

标签: java string object return


【解决方案1】:

您的代码存在许多问题。

  • 首先,将Strings 与== 进行比较,而不是equals(有 大量关于 String 比较和 Object 平等的文献 在 Java 中,我建议你看看 here 和 here。
  • 其次,您并不总是在choices 方法中返回值。您的方法必须返回 String(即使是默认值,如 null),但除了给定参数之外,您没有考虑用户输入。
  • 你的Scanner next 也不起作用,因为你调用了两次, 当您只想调用一次时。
  • 最后,您应该看一下 Java 命名约定:方法 名字是camelBack。有关代码约定,请参阅 here。

这里有一个可能会对你有所帮助的 sn-p:

public static String choices(String value1, String value2) {
    Scanner x = new Scanner(System.in);
    System.out.println("Type your choice and ENTER...");
    String input = x.nextLine();
    if (input.equals(value1)) {
        return value1;
    }
    else if (input.equals(value2)) {
        return value2;
    }
    // handling other user inputs
    else {
        return "nothing";
    }
}

public static void main(String[] args) {
    // usage of method. Note that you could also refactor with varargs, as in: 
    // String... values in method signature.
    // This way you could iterate over values and check an arbitrary number of values, 
    // instead of only 2.
    System.out.println(choices("foo", "bar"));
}

输出:

Type your choice and ENTER...

...然后根据输入“foo”或“bar”或“nothing”。

【讨论】:

    【解决方案2】:
    You can use something similar to this:-
    
    public String Choices(String value1, String value2)
        {
            Scanner x = new Scanner(System.in);
            String option=x.next();
            if(option!=null)
            {
                if(option.equals(value1)) return value1;
                else if (option.equals(value2)) return value2;
    
            }
            else return option;
    
        }
    

    【讨论】:

    • 谢谢,这真的很有帮助。
    【解决方案3】:

    如果你想比较字符串只需使用 equals 不需要在这里使用 Scanner。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2014-12-12
      • 2014-04-13
      相关资源
      最近更新 更多