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方法,我找不到像我这样的例子,在括号中使用带字符串的方法
任何可能有帮助的想法甚至是公然的答案?
答案 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{}