Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中创建几种不同的if条件_Java - Fatal编程技术网

如何在Java中创建几种不同的if条件

如何在Java中创建几种不同的if条件,java,Java,如果条件不起作用,则始终折价补贴=3250.00我需要它,具体取决于州和汽车年份。我附上了我的代码和更多的解释 置换补贴取决于车辆的制造年份以及初始购买时注册的国家。FHM不接受1990年之前制造的车辆作为折价补贴。对于在以下日期之间制造的车辆: 1990年和1999年,最初在伊利诺伊州、印第安纳州、爱荷华州、堪萨斯州、密歇根州、明尼苏达州、密苏里州或内布拉斯加州注册,贸易补贴为3000.00美元,其他所有州为2750.00美元 对于2000年至2009年期间制造并最初在伊利诺伊州、印第安纳州、

如果条件不起作用,则始终折价补贴=3250.00我需要它,具体取决于州和汽车年份。我附上了我的代码和更多的解释

置换补贴取决于车辆的制造年份以及初始购买时注册的国家。FHM不接受1990年之前制造的车辆作为折价补贴。对于在以下日期之间制造的车辆:

1990年和1999年,最初在伊利诺伊州、印第安纳州、爱荷华州、堪萨斯州、密歇根州、明尼苏达州、密苏里州或内布拉斯加州注册,贸易补贴为3000.00美元,其他所有州为2750.00美元

对于2000年至2009年期间制造并最初在伊利诺伊州、印第安纳州、爱荷华州、堪萨斯州、密歇根州、明尼苏达州、密苏里州、内布拉斯加州、北达科他州、俄亥俄州、南达科他州或威斯康星州注册的车辆,折让额为3250.00美元,其他所有州折让额为3000.00美元

对于2010年及以后制造的车辆,无论初始注册状态如何,置换补贴为5000.00美元

if (vehiclesYear <= 1999 || vehiclesYear >= 1990
        & (stateNames.getSelectedItem() == "IL")
        || (stateNames.getSelectedItem() == "IN")
        || (stateNames.getSelectedItem() == "IA")
        || (stateNames.getSelectedItem() == "KS")
        || (stateNames.getSelectedItem() == "MI")
        || (stateNames.getSelectedItem() == "MN")
        || (stateNames.getSelectedItem() == "MO")
        || (stateNames.getSelectedItem() == "NE")) {
    tradeIn = 3000.00;
} else {
    tradeIn = 2750.00;
}

if (vehiclesYear >= 2000
        & (stateNames.getSelectedItem() == "IL")
        || (stateNames.getSelectedItem() == "IN")
        || (stateNames.getSelectedItem() == "IA")
        || (stateNames.getSelectedItem() == "KS")
        || (stateNames.getSelectedItem() == "MI")
        || (stateNames.getSelectedItem() == "MN")
        || (stateNames.getSelectedItem() == "MO")
        || (stateNames.getSelectedItem() == "NE")
        || (stateNames.getSelectedItem() == "ND")
        || (stateNames.getSelectedItem() == "OH")
        || (stateNames.getSelectedItem() == "SD")
        || (stateNames.getSelectedItem() == "WI")) {
    tradeIn = 3250.00;
} else {
    tradeIn = 3000.00;
}

if (vehiclesYear >= 2010) {
    tradeIn = 5000.00;
}
if(车辆年份=1990
&(stateNames.getSelectedItem()=“IL”)
||(stateNames.getSelectedItem()=“IN”)
||(stateNames.getSelectedItem()=“IA”)
||(stateNames.getSelectedItem()=“KS”)
||(stateNames.getSelectedItem()=“MI”)
||(stateNames.getSelectedItem()=“MN”)
||(stateNames.getSelectedItem()=“MO”)
||(stateNames.getSelectedItem()=“NE”)){
贸易额=3000.00;
}否则{
贸易额=2750.00;
}
如果(车辆年份>=2000
&(stateNames.getSelectedItem()=“IL”)
||(stateNames.getSelectedItem()=“IN”)
||(stateNames.getSelectedItem()=“IA”)
||(stateNames.getSelectedItem()=“KS”)
||(stateNames.getSelectedItem()=“MI”)
||(stateNames.getSelectedItem()=“MN”)
||(stateNames.getSelectedItem()=“MO”)
||(stateNames.getSelectedItem()=“NE”)
||(stateNames.getSelectedItem()=“ND”)
||(stateNames.getSelectedItem()=“噢”)
||(stateNames.getSelectedItem()=“SD”)
||(stateNames.getSelectedItem()=“WI”)){
贸易额=3250.00;
}否则{
贸易额=3000.00;
}
如果(车辆年份>=2010){
贸易额=5000.00;
}

我不能完全确定这一点,但您可能必须将“tradein=3000.00;”放在一个块中才能解决它。{}在'if'语句之后和'else'语句之前,所有内容都应该被包围在一个块中,这可能会改变并修复您的问题

目前任何一年都满足以下条件:

if (vehiclesYear <= 1999 || vehiclesYear >= 1990)
if(车辆年份=1990)
这是因为每年不是在1999年之前就是在1990年之后

如果您想要1999年至1990年之间的年份,则需要执行以下操作:

if (vehiclesYear <= 1999 && vehiclesYear >= 1990)
if(车辆年份=1990)

让我们浏览一下您的代码

如果你想要一张中间支票

跟随变化

if (vehiclesYear <= 1999 || vehiclesYear >= 1990)
并使用此
项进行比较

另外,由于它是一个字符串,我建议您使用
.equals()
方法进行比较,而不是
=
,以避免参考比较问题

此外,为了进行比较,您可以使用
switch(item)
Java7及更高版本支持相同的方法


一个主要问题是,您正在使用==运算符比较字符串,这不能保证给出预期的结果

在Java中,字符串是对象,并且==运算符比较对象引用相等。 所以如果我这样做了

String myString = "Foo";
if (myString == "Foo") {
  System.out.println("They are the same");
} else {
  System.out.println("They are not the same");
}
结果不能保证。要比较字符串是否相等,请使用
String.equals(String)
方法

从风格上讲,我可能会将状态代码插入单独的
Set
实例中,如下所示:

private boolean isInTheNineties(int year) {
  return year >= 1990 && year <= 1999;
}

private double getTradeIn(int vehiclesYear, SomeClass stateNames) {

 Set<String> s0 = new HashSet<>();
 s0.addAll(Arrays.asList("IL", ... , "NE"));
 String registrarState = stateNames.getSelectedItem();
 if (isInTheNineties(vehiclesYear)) {
   if (s0.contains(registrarState)) {
     return 3000.00;
   } else {
     return 2750.00;
   }
 }

 // And so on for the 2000s
}
private boolean Isinthenienties(整数年){

return year>=1990&&year用一个示例简要说明您的问题,并提供相关代码(缩进良好)。我们不需要完整的代码。发布一篇。
vehiclesYear=1990
这实际上没有任何作用。虽然很多人都有可能重复,但在这里没有任何功能上的区别。好的,谢谢你的提示:)我是java新手,正在尝试收集这些声誉点,我认为我的研究是正确的,但好的,谢谢你的建议e Help不要“试图抬高”声誉。你需要用恰当、结构合理、信息灵通的答案来赢得声誉。如果你是Java新手,在回答其他Java新手的问题之前,先体验一下它。然后,尝试回答没有被否决5次的问题……这说明了这个问题。
switch (item)
{
    case "IL":
    case "IN":
    .
    .
    case "KS":
        return true;//or do something here
    break;
}
String myString = "Foo";
if (myString == "Foo") {
  System.out.println("They are the same");
} else {
  System.out.println("They are not the same");
}
private boolean isInTheNineties(int year) {
  return year >= 1990 && year <= 1999;
}

private double getTradeIn(int vehiclesYear, SomeClass stateNames) {

 Set<String> s0 = new HashSet<>();
 s0.addAll(Arrays.asList("IL", ... , "NE"));
 String registrarState = stateNames.getSelectedItem();
 if (isInTheNineties(vehiclesYear)) {
   if (s0.contains(registrarState)) {
     return 3000.00;
   } else {
     return 2750.00;
   }
 }

 // And so on for the 2000s
}