Java 给定所有变量,程序计算不正确
[仍在学习…]当尝试创建一个程序来计算21点表的优点/缺点时,给定所有规则变化,此计算器仅显示用户对牌组数量的初始输入。运行时,用户的所有其他规则似乎都被完全忽略。例如,对于6组,无论您为其余规则输入什么,结果始终为-0.54%。它只考虑甲板的数量。我如何解决这个问题 我一直在看我的两本书(Java 24小时和Java 21天),对我来说(大约一个月后),它看起来应该可以工作了 代码如下:Java 给定所有变量,程序计算不正确,java,if-statement,Java,If Statement,[仍在学习…]当尝试创建一个程序来计算21点表的优点/缺点时,给定所有规则变化,此计算器仅显示用户对牌组数量的初始输入。运行时,用户的所有其他规则似乎都被完全忽略。例如,对于6组,无论您为其余规则输入什么,结果始终为-0.54%。它只考虑甲板的数量。我如何解决这个问题 我一直在看我的两本书(Java 24小时和Java 21天),对我来说(大约一个月后),它看起来应该可以工作了 代码如下: { public static void main(String[] args){ double ed
{ public static void main(String[] args){ double edge = 0;
Scanner sc = new Scanner(System.in);
System.out.println("How many decks (1, 2, 4, 6, 8)");
int decks = sc.nextInt();
System.out.println("Dealer hits Soft 17 (Y or N)");
String soft17 = sc.next();
System.out.println("Double after splits (Y or N)");
String doubleAfterSplit = sc.next();
System.out.println("Double 10/11 only (Y or N)");
String double1011 = sc.next();
System.out.println("Double 9/10/11 only (Y or N)");
String double91011 = sc.next();
System.out.println("Resplit Aces (Y or N)");
String rSA = sc.next();
System.out.println("Late Surrender (Y or N)");
String lateSurrender = sc.next();
System.out.println("Early Surrender (Y or N)");
String earlySurrender = sc.next();
System.out.println("Lose all doubles/splits vs. Natural (Y or N)");
String loseAllDS = sc.next();
sc.close();
//Number of Decks Option
if (decks == 1) {
edge += 0.01;
} else if (decks == 2) {
edge -= 0.32;
} else if (decks == 4) {
edge -= 0.49;
} else if (decks == 6) {
edge -= 0.54;
} else if (decks == 8) {
edge -= 0.57;
} else {
System.out.println("You made a mistake. Start over.");
}
//Soft 17 Options
if (soft17 == "Y") {
edge -= 0.20;
} else {
edge += 0;
}
//Double After Splits Option
if (doubleAfterSplit == "Y") {
edge += 0.14;
} else {
edge += 0;
}
//Double 10 and 11 Only Option
if (double1011 == "Y") {
edge -= 0.17;
} else {
edge += 0;
}
//Double 9, 10, and 11 Only Option
if (double91011 == "Y") {
edge -= 0.08;
} else {
edge += 0;
}
//Resplit Aces Option
if (rSA == "Y") {
edge += 0.08;
} else {
edge += 0;
}
//Late Surrender Option
if (lateSurrender == "Y") {
edge += 0.08;
} else {
edge += 0;
}
//Early Surrender Option
if (earlySurrender =="Y") {
edge += 0.65;
} else {
edge += 0;
}
//Lose on All Doubles and Splits vs Natural Option
if (loseAllDS == "Y") {
edge -= 0.11;
} else {
edge += 0;
}
if (edge >= 0) {
System.out.println("Your advantage is: " + edge + "%");
} else {
System.out.println("Your disadgantage is: " + edge + "%");
}
}
将soft17==“Y”
更改为soft17。等于(“Y”)
等
阅读此将soft17==“Y”
更改为soft17.equals(“Y”)
等
阅读此将soft17==“Y”
更改为soft17.equals(“Y”)
等
阅读此将soft17==“Y”
更改为soft17.equals(“Y”)
等
阅读此您的基本问题非常简单: 通常情况下,==运算符不会以您想要的方式处理字符串在Java中,检查两个对象是否是相同的对象,而不是它们是否具有相同的值 所以,你用来检查“Y”答案的台词并不像你认为的那样;相反,您应该使用equals方法,如下所示:
if (double91011.equals("Y"))
你的基本问题很简单: 通常情况下,==运算符不会以您想要的方式处理字符串在Java中,检查两个对象是否是相同的对象,而不是它们是否具有相同的值 所以,你用来检查“Y”答案的台词并不像你认为的那样;相反,您应该使用equals方法,如下所示:
if (double91011.equals("Y"))
你的基本问题很简单: 通常情况下,==运算符不会以您想要的方式处理字符串在Java中,检查两个对象是否是相同的对象,而不是它们是否具有相同的值 所以,你用来检查“Y”答案的台词并不像你认为的那样;相反,您应该使用equals方法,如下所示:
if (double91011.equals("Y"))
你的基本问题很简单: 通常情况下,==运算符不会以您想要的方式处理字符串在Java中,检查两个对象是否是相同的对象,而不是它们是否具有相同的值 所以,你用来检查“Y”答案的台词并不像你认为的那样;相反,您应该使用equals方法,如下所示:
if (double91011.equals("Y"))
问题是使用了
==
而不是equals()
方法
=
检查两个变量是否引用同一对象,而equals()检查两个对象的值是否相等
有时,=
似乎可以处理字符串对象,因为存在一个对象池,该对象池将相同的字符串对象重用为文本(即指定为常量引号的字符串),因此两个字符串实际上都引用了相同的对象
然而情况并非总是如此,例如,当从控制台收集输入并为其分配新的字符串对象时
通常,应该使用对象的equals()
方法来检查对象之间的值是否相等。问题在于使用=
而不是equals()
方法
=
检查两个变量是否引用同一对象,而equals()检查两个对象的值是否相等
有时,=
似乎可以处理字符串对象,因为存在一个对象池,该对象池将相同的字符串对象重用为文本(即指定为常量引号的字符串),因此两个字符串实际上都引用了相同的对象
然而情况并非总是如此,例如,当从控制台收集输入并为其分配新的字符串对象时
通常,应该使用对象的equals()
方法来检查对象之间的值是否相等。问题在于使用=
而不是equals()
方法
=
检查两个变量是否引用同一对象,而equals()检查两个对象的值是否相等
有时,=
似乎可以处理字符串对象,因为存在一个对象池,该对象池将相同的字符串对象重用为文本(即指定为常量引号的字符串),因此两个字符串实际上都引用了相同的对象
然而情况并非总是如此,例如,当从控制台收集输入并为其分配新的字符串对象时
通常,应该使用对象的equals()
方法来检查对象之间的值是否相等。问题在于使用=
而不是equals()
方法
=
检查两个变量是否引用同一对象,而equals()检查两个对象的值是否相等
有时,=
似乎可以处理字符串对象,因为存在一个对象池,该对象池将相同的字符串对象重用为文本(即指定为常量引号的字符串),因此两个字符串实际上都引用了相同的对象
然而情况并非总是如此,例如,当从控制台收集输入并为其分配新的字符串对象时
通常,您应该使用对象的equals()
方法来检查对象之间的值相等性。谢谢!这帮了大忙!非常感谢。这帮了大忙!非常感谢。这帮了大忙!非常感谢。这帮了大忙!检查了另一个问题。谢谢你的帮助!检查了另一个问题。谢谢你的帮助!检查了另一个问题。谢谢你的帮助!检查了另一个问题。谢谢