需要我的java if语句的建议吗

需要我的java if语句的建议吗,java,string,if-statement,int,Java,String,If Statement,Int,我希望能够使用这样的if语句: int price = 60; if (pizza.equals("string1","string2","string3")) { int price2 = 10; System.out.println("You want " + pizza + " and it will cost " + price + price2 +" :-"); } else if (pizza.equals("string1","string2") { } 如果

我希望能够使用这样的if语句:

int price = 60;
if (pizza.equals("string1","string2","string3")) { 
    int price2 = 10;
    System.out.println("You want " + pizza + " and it will cost " + price + price2  +" :-");
}
else if (pizza.equals("string1","string2") {
}

如果我输入的比萨饼名为string1、string2或string3,那么我想得到一个int值和一个名为price2的变量,然后不知何故将其添加到price(price+price2)中。

不,这不是有效的Java。你不能只是凭空幻想。编译器会告诉你的

您可以这样做:

private Map<String, Integer> prices = new HashMap<String, Integer>() {{
    put("cheese", 10);
    put("pepperoni", 15);
    put("five meat", 20);
}};

public int getPrice(String pizzaOrder) { 
    int price = 0;
    if ((pizzaOrder != null) && prices.keySet().contains(pizzaOrder)) {
        price = prices.get(pizzaOrder);
    }
    return price;
}
private Map prices=new HashMap(){{
放入“奶酪”,10;
香肠,15;
放入(“五块肉”,20);
}};
public int getPrice(字符串pizzaOrder){
国际价格=0;
if((pizzaOrder!=null)&&prices.keySet()包含(pizzaOrder)){
价格=价格。获取(比萨饼订单);
}
退货价格;
}

这样的设计更容易测试,更灵活,封装更好。

使用switch case语句(Java 7,并确保
pizza
不为空)

或者您可以使用:

if (Arrays.asList("pizza1", "pizza2", "pizza3").contains(pizza)) {
  ...
} else if (Arrays.asList("pizza3", "pizza4").contains(pizza)) {
  ...
} 
它取决于您的需要,并且可以使用不可变集(例如
Collections.unmodifiableSet
)将asList重构为常量

[编辑]由于有人使用了enum,您也可以这样做:

enum Pizza {
  pizza1(10),
  pizza2(10),
  pizza3(0),
  pizza4(0);

  private final int additionalPrice;
  private Pizza(final int additionalPrice) {
    this.additionalPrice = additionalPrice;
  } 
  public int getAdditionalPrice() {return this.additionalPrice; }
}
稍后在代码中:

String pizzaAsString = "pizza1"; // this is the variable "pizza" in your original code
Pizza pizza = Pizza.valueOf(pizzaAsString);
int price = 60 + pizza.getAdditionalPrice();

枚举在某些情况下更好(这一种)。

这里有三种基本方法:

1) 在
if
语句中使用或:

if (pizza.equals("pizza1") || pizza.equals("pizza2") || ...)
2) 创建一个
开关
语句:

switch(pizza) {
    case "pizza1":
    case "pizza2":
        return 10;
    case "pizza3":
        return 20;
    case "pizza4":
        return 15;        
}
3) 创建一张
地图
存储每个比萨饼的价格:

Map<String, Integer> prices = new HashMap<>();
prices.put("pizza1", 10);
prices.put("pizza2", 15);
prices.put("pizza3", 500); // Expensive pizza

int price = prices.get(pizza);
Map prices=newhashmap();
价格。卖出价(“比萨1”,10);
价格。卖出价(“比萨2”,15);
价格。卖出(“比萨3”,500);//昂贵的比萨饼
int price=prices.get(比萨饼);

开关盒的稍微扩展版本:

int price = 60, price2 = 0;
switch (pizza) {
  case "string3":
    price2 = 10;
    //intentionally no break.
  case "string1"://intentionally no break
  case "string2":
    System.out.println("You want " + pizza + " and it will cost " + (price + price2)  +" :-");
    break;
  default: throw new IllegalStateException("Wrong string for pizza: " + pizza);
}

不过,我可能会使用枚举而不是字符串。

很抱歉问了一个不好、不好看的问题,我第一次来这里:)使用OR逻辑运算符(
|
):
如果(pizza.equals(“string1”)| | pizza.equals(“string2”)| | pizza.equals(“string3”){…}
您应该改用switch-case语句(假设Java7或更高版本)。请同时记录有意失败的案例。或者使用集合和
包含(pizza)
。伙计们,有一件事,如果pizza等于一个字符串,我可以生成一个int变量吗?实际上我认为这是大多数程序员所做的-编造东西并希望它能工作:-DFair够了。8)编译器是唯一的例外——必须说这种语言。没有俚语;不要编造你自己的方言。
int price = 60, price2 = 0;
switch (pizza) {
  case "string3":
    price2 = 10;
    //intentionally no break.
  case "string1"://intentionally no break
  case "string2":
    System.out.println("You want " + pizza + " and it will cost " + (price + price2)  +" :-");
    break;
  default: throw new IllegalStateException("Wrong string for pizza: " + pizza);
}