不确定如何使用.equals()方法比较if语句中的字符串

时间:2017-03-06 08:27:25

标签: java

    System.out.println("\n");
    System.out.println("What is the upgrade of your Hammer?  You must choose a number.");
    System.out.println("1. No Upgrade");
    System.out.println("2. Sapphire.");
    System.out.println("3. Emerald.");
    System.out.println("4. Ruby.");
    System.out.println("5. Diamond."); 
    String var1 = Scanner.nextLine(); 




    //char hammerlevel = (char) System.in.read();
    System.out.println();
    System.out.println("\n");

    double noviceStardustPotion = 6023.33333333; //amount of experience per potion average
    if (var1.equals('No Upgrade')
        {

        }

当我使用这些数字时,它最初工作,但我不希望我的用户输入数字,我希望他们输入实际的单词。

 if (hammerlevel == '1')
 {

 }

我研究过.equals方法,我找不到像我这样的例子,在括号中使用带字符串的方法

任何可能有帮助的想法甚至是公然的答案?

3 个答案:

答案 0 :(得分:2)

首先,你是if语句有点不稳定。它缺少关闭括号,它应该使用“”代替''来表示字符串文字。

if (var1.equals("No Upgrade"))
{

}

还有一点关于equals()的工作原理。

String input = "No Upgrade";
String input2 = "no upgrade";
String input3 = "no upgrade";

//this returns false because the strings are not the same value
if (input.equals(input2) {
    //do action
}

//this returns true because the string values are the same
if (input.equals("No Upgrade") {
    //do action
}

//this returns true because the string values are the same
if (input2.equals(input3) {
    //do action
}

string的equals方法是比较字符串的值。如果它有一个额外的空格,一个额外的大写字母,任何东西,它都不会是真的。你可以通过在两个字符串上使用toUpperCase()或toLowerCase()然后检查它们的值,或者只使用equalsIgnoreCase()来避免这种情况。

if (input1.equalsIgnoreCase("No Upgrade")) {
}

答案 1 :(得分:0)

将代码简化为相关位:

String var1 = Scanner.nextLine(); 
if (var1.equals('No Upgrade')
{

}

(其他所有内容都是System.out.println来电或未使用的变量)

此代码的唯一问题是'No Upgrade'不是有效的Java,因此无法编译:您使用单引号来表示char文字,因此您只能拥有一个字符引号之间,例如'a'

您使用双引号指定String字面值:

String var1 = Scanner.nextLine(); 
if (var1.equals("No Upgrade")
{

}

答案 2 :(得分:-1)

首先,检查用户的输入,所以输入不应该像“你s * ck”

int var1 = Scanner.nextLine().parseInt(); 
if(var1 == 1){} 

if(var1 == 2) //You can also use int, but you don´t want, ok

if (var1.equals("1")) //Because var1 should be a number{}