使用" OR" Java中的运算符

时间:2016-03-11 15:18:01

标签: java string while-loop equals logical-operators

这是代码。

do {
    System.out.println("Enter Product Code: ");
    medicine = machine1.nextInt();

    if (medicine==1) {
        machine1.buy1();
        machine1.addproduct(); 
    } 
    if (medicine==2); {
        machine1.buy2();
        machine1.addproduct();
    } 
} while((String answer=='y') || (String answer=='Y'));

它给出了这个错误:

enter code    drugstore1.java:96: error: ')' expected
            }while((String answer=='y'))||((String answer=='Y'));
                                 ^    drugstore1.java:96: error: ';' expected
            }while((String answer=='y'))||((String answer=='Y'));
                                       ^  drugstore1.java:96: error: ';' expected
            }while((String answer=='y'))||((String answer=='Y'));
                                                          ^

修复其他错误后,它会发生错误。我想我正确使用它..但是出了什么问题?

5 个答案:

答案 0 :(得分:5)

我建议你写一下

ssh key

intead of

while(answer.equalsIgnoreCase("y"));

您无法在逻辑条件中定义新变量。

while((String answer=='y'))||((String answer=='Y'));

答案 1 :(得分:4)

尝试在所有条件下使用double quoteequalsignorecase方法,条件如下:

  while(answer.equalsignorecase("y"));

在想要使用创建变量插入字符串“y”时尝试使用nextLine()

  String answer= machine1.nextLine();

像这样:

  System.out.println("Enter Product Code: ");
    medicine = machine1.nextInt();
  System.out.println("Enter y if you want leave: ");
    String answer= machine1.nextLine();

答案 2 :(得分:2)

以下是一些指导原则:

  • 不要在while()语句中声明对象。您的意思是NSArray *ages = @[@"3", @"10", @"18", @"20"]; BOOL(^parameter)(NSInteger integer) = ^BOOL(NSInteger integer) { if (integer >= 18) { return YES; } return NO; }; NSInteger(^block)(BOOL(^parameter)(), NSArray *array) = ^NSInteger(BOOL(^parameter)(), NSArray *array) { for (NSUInteger i = 0; i < array.count; i++) { NSInteger arrayInteger = [array[i] intValue]; if (parameter(arrayInteger) == YES) { return i; } } return -1; }; NSInteger result = block(parameter, ages); 吗?

  • 不要使用==运算符比较字符串。字符串与while(answer=="y")进行比较。 .equals()仅检查两个操作数是否位于相同的物理内存位置。

答案 3 :(得分:2)

您正在尝试在您的条件中声明变量:

String answer=='y'

变量声明如何用作比较?

answer应该来自哪里?它并不存在于您的代码中的任何位置,因此它并不清楚您在那里尝试完成的任务。

但是一旦你在代码中有一个answer变量,可能包含一些'y''Y'值,你就可以这样比较:< / p>

while(answer.equalsIgnoreCase("y"))

此外,你有一个错误:

if(medicine==2);

该分号将以静默方式终止if块,并且无论条件如何,以下代码块都将始终执行。删除那个分号。

答案 4 :(得分:2)

应该是

while("y".equalsIgnoreCase(answer)){// will avoid null pointer exception if answer is null

 if(medicine==1) 
            {
                machine1.buy1();
                machine1.addproduct(); 
            } 
        else if(medicine==2) // better for performance as both if conditions are mutually exclusive
            {
                machine1.buy2();
                machine1.addproduct();
            } 

}