java - 程序执行方法中每个 if 语句内的操作。不应该

标签 java if-statement

我正在编写一个程序,在一种特定情况下,该程序会进入每个 if 语句。但这不应该。我通过一个 boolean 值来控制它是否应该这样做,我发送该 boolean 值并引用该方法。但仍然无法正常工作。

以下是包含的两个方法的代码片段:

    void tilStasjon(String startStasjon){

        boolean sjekkStasjon=true;
        while(sjekkStasjon){
            System.out.println("Vennligst tast inn til-stasjonen: ");
            String sluttStasjon=input.next().toLowerCase();
            if(stasjonerMap.containsKey(sluttStasjon)){
                if(sluttStasjon!="ringen"){
                    sjekkStasjon=false;
                    beregnRuter(startStasjon, sluttStasjon);
                }
            }else{  
                System.out.println("Stasjon ikke funnet.");
                sjekkStasjon=true;
            }
        }
    }

    void beregnRuter(String startStasjon, String sluttStasjon){

        Stasjon til=stasjonerMap.get(startStasjon);
        Stasjon fra=stasjonerMap.get(sluttStasjon);
        ArrayList<Linje> fraLinjeListe=new ArrayList<Linje>(fra.linjeList);
        ArrayList<Linje> tilLinjeListe=new ArrayList<Linje>(til.linjeList);
        int tilStasjonsNummer, fraStasjonsNummer;
        int retning;
        double tid= 0.0;
        String endeStasjonsNavn;
        boolean overgang=false;

        tilStasjonsNummer=0;
        fraStasjonsNummer=0;

        for (int i = 0; i < fraLinjeListe.size(); i++) {
            for (int j = 0; j < tilLinjeListe.size(); j++) {
                if(fra.linjeList.get(i).equals(til.linjeList.get(j))){
                    System.out.println(fra.linjeList.get(i).linjeNummer);
                    Linje aktuellLinje=linjerMap.get(fra.linjeList.get(i).linjeNummer);
                    tilStasjonsNummer=aktuellLinje.stasjonsNummer(til);
                    fraStasjonsNummer=aktuellLinje.stasjonsNummer(fra);
                    retning=tilStasjonsNummer-fraStasjonsNummer;
                    tid=beregnTid(retning, overgang, aktuellLinje);

                    endeStasjonsNavn=aktuellLinje.endestasjon(retning);
                    System.out.println("Ta T-bane linje " + aktuellLinje.linjeNummer + " fra " + startStasjon + " til " + sluttStasjon + " i retning " + endeStasjonsNavn + ". Estimert reisetid: " + tid);             
                }   
            }
        }
    }

下面是出现问题的方法。它同时进入外部 if 和 else-if。这是为什么?

    double beregnTid(int retning, boolean overgang, Linje aktuellLinje){
        double tidMellomStasjoner;
        double tid=0.0;
        int absRetning=Math.abs(retning);
        double tidOvergang;

        if(overgang=false){
            if(aktuellLinje.type==0){
                System.out.println(absRetning);
                tidMellomStasjoner=1.8;
                tid=tidMellomStasjoner*absRetning;
            }else if(aktuellLinje.type==1){
                tidMellomStasjoner=1.4;
                tid=tidMellomStasjoner*absRetning;
            }
        }else if(overgang=true){
            if(aktuellLinje.type==0){
                System.out.println("Test");
                tidOvergang=7.5;
                tidMellomStasjoner=1.8;
                tid=(tidMellomStasjoner*absRetning)+tidOvergang;
            }else if(aktuellLinje.type==1){
                tidOvergang=5.0;
                tidMellomStasjoner=1.4;
                tid=(tidMellomStasjoner*absRetning)+tidOvergang;
            }
        }
        return tid; 
    }
}

最佳答案

如果你想比较值/对象

对于文字(简单类型,如 int、boolean):

更改分配

overgang=false

比较

overgang==false

对于对象(即字符串)

更改比较/分配

someVar!="String"

.equals() 调用

someVar.equals("String")

关于java - 程序执行方法中每个 if 语句内的操作。不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20061324/

相关文章:

java - 堆栈不断弹出相同的元素

python - Python MapReduce如何添加条件语句

python - 从列表中生成多个条件语句

Java - 根据条件将 for 循环计数器转回原处

Java - If 语句问题 - 更改条件会删除下面的其他语句

java - ftl 模板中的当前日期

java - 如何在 tablerow 内以编程方式设置 textview 的边距

java - 如何在 Groovy/Grails 中定义工厂方法?

java - 获取远程地址的 Repository 对象

python - 如何打破多个 while 循环