为了账号安全,请及时绑定邮箱和手机立即绑定

代码仅输出相同的内容,不会使用 .equals 来输出不同的内容

代码仅输出相同的内容,不会使用 .equals 来输出不同的内容

jeck猫 2023-08-23 14:35:55
我正在为我所在的班级做一个项目,任务是制作一个需要Netbeans3 个输入的程序,人的身高,背部问题心脏问题。老师说这两题要用boolean。他希望我们用它来inputBack.equals("N")看看它是否等于N我得到的输入,无论如何,如果有人可以帮助我,我会将我的代码放在下面,那就太好了!基本上,程序仅在我更改高度时输出不同,但我需要它在b或h时显示其他内容Y。double H;String b, h;b = back.getText();h = heart.getText();H = Double.parseDouble(height.getText());if (h.equals("Y") || b.equals("Y")) {    output.setText("Sorry, its not safe for you to ride the coaster");}if ((H >= 122 && H <= 188) && (h.equals("N") || b.equals("N"))) {    output.setText("You are cleared to ride, have fun!");} else if (b.equals("Y") || h.equals("Y")) {    output.setText("Sorry, its not safe for you to ride the coaster");} else {    output.setText("Sorry, its not safe for you to ride the coaster");}
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

实际上你把它弄得太复杂了。你真正的问题在于:


if ((H >= 122 && H <= 188) && (h.equals("N") || b.equals("N")))

OR 运算符应该是 AND 运算符。如果此人没有心脏问题,无论 的值是多少,您的测试都将始终成功b。这就是为什么即使更改值,输出也不会改变。


我认为像下面这样的简单解决方案已经足以实现您想要的目标:


// Please use sensible names for your variables, and no uppercase single letters

double height = Double.parseDouble(heightField.getText()); // This could throw a NumberFormatException, you probably want to catch it

String backIssues = backField.getText();

String heartIssues = heartField.getText();


// Drop your first if test, it is completely unnecessary there.


// If the person is between 122 and 188 cm, and has no heart issues and has no back issues: Hooray!

if (height >= 122 && height <= 188 && heartIssues.equalsIgnoreCase("N") && backIssues.equalsIgnoreCase("N")) {

  output.setText("You are cleared to ride, have fun!");

} else { // In all other cases, not allowed to ride the coaster

  output.setText("Sorry, its not safe for you to ride the coaster");

}


查看完整回答
反对 回复 2023-08-23
?
MMTTMM

TA贡献1869条经验 获得超4个赞

你的错误在这一行:

if ((H >= 122 && H <= 188) && (h.equals("N") || b.equals("N"))) {

事实上,如果你的身高合适,即使你有另外两个问题之一,你也可以去坐过山车。如果您输入 h="N" 和 b="Y",则条件h.equals("N") || b.equals("N")将为 true,因为 h="N"。最好的做法是将这一行替换为:

if ((H >= 122 && H <= 188) && (h.equals("N") && b.equals("N"))) {

你也可以简化你的代码,你放了太多的if...


查看完整回答
反对 回复 2023-08-23
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您有太多多余的 if/else 语句。您可以像这样简化您的代码:


//Heart or back problem, so no riding

if (h.equals("Y") || b.equals("Y")) {

    output.setText("Sorry, its not safe for you to ride the coaster");

}

else {  //health ok, check height


  if (H >= 122 && H <= 188)

      output.setText("You are cleared to ride, have fun!");

  else

      output.setText("You are outside the height requirements, you can't ride")

}

另请记住,如果用户输入的高度值不是数字,您将抛出异常。


查看完整回答
反对 回复 2023-08-23
  • 3 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信