2013-03-10 67 views
0

我正在调试一个java类的应用程序,并且在情况39中更改了switch语句以使intPos 62而不是63不再起作用。现在不用在所有情况下打印控制台输出,而只是为switch语句中的最后一种情况提供它。具有switch语句的类的代码如下。切换只执行一条语句

public class NWSFB 
{ 
    /** A class variable containing the Station Weather */ 
    private String strWeather ; 
    /** The Constructor */ 
    public NWSFB(String strVar) 
    { 
     strWeather = strVar; 
    } 
    /** A method that finds the station */  
    public String getStationID(String strVar) 
    { 
    String stationId = strVar ; 
    return stationId.substring(0,3); 
    }  
public String getWindInfo(String strAlt) 
{ 
    String strRet; 
    strRet = "The altitude weather for " + strAlt + "000 feet is " +  getAltitudeWeather(strAlt) 
     + "\nWind Direction:" +getWindDir(strAlt) +"0 degrees" 
     + "\nWind Speed:" +getWindSpeed(strAlt) + " knots" 
     + "\nWind temperature:" +getWindTemperature(strAlt) + "C" 
     + "\n. . ." 
     + "\n"; 


    return strRet; 
} 

private int getPos(String strAlt) 
{ 
    int intAlt; 
    int intPos =0; 
    intAlt = Integer.parseInt(strAlt); 
    switch (intAlt) 
    { 
    case 3: 
     intPos = 4; 
     break; 
    case 6: 
     intPos = 9; 
     break; 
    case 9: 
     intPos = 17; 
     break; 
    case 12: 
     intPos = 25; 
     break; 
    case 18: 
     intPos = 33; 
     break; 
    case 24: 
     intPos = 41; 
     break; 
    case 30: 
     intPos = 49; 
     break; 
    case 34: 
     intPos = 56; 
     break; 
    case 39: 
     intPos = 62; 
     break; 
    } 
    return intPos; 
} 
public String getAltitudeWeather (String strAlt) 
{ 
    int intPosition = getPos(strAlt) ; 
    String strPos = strWeather.substring(intPosition, intPosition+7); 
    return strPos ; 
} 
//get wind direction 
public String getWindDir(String strAlt) 
{ 
    String strPos = getAltitudeWeather(strAlt); 
    return strPos.substring(0,2); 

} 
//get wind speed 
public String getWindSpeed(String strAlt) 
{ 
    String strPos = getAltitudeWeather(strAlt); 
    return strPos.substring(2,4); 
} 
//get wind temperature 
public String getWindTemperature(String strAlt) 
{ 
    String strPos = getAltitudeWeather(strAlt); 
    return strPos.substring(4,7); 
} 


} 

这是使用类的代码

public class A19005 
{ 

    static String strStationWeather = "SAN 1905 1808+24 1512+17 1209+10 1708-06 2016-16 211831 211941 192652" ; 
    public static void main(String[] args) 
    { 
    //Create the myWeather object 
     NWSFB myWeather = new NWSFB(strStationWeather); 
    //use myWeather to get the weather at various altitudes 
     System.out.println("Sation ID: " + myWeather.getStationID(strStationWeather)); 
     System.out.println(myWeather.getWindInfo("03")); 
     System.out.println(myWeather.getWindInfo("06")); 
     System.out.println(myWeather.getWindInfo("09")); 
     System.out.println(myWeather.getWindInfo("12")); 
     System.out.println(myWeather.getWindInfo("18")); 
     System.out.println(myWeather.getWindInfo("24")); 
     System.out.println(myWeather.getWindInfo("30")); 
     System.out.println(myWeather.getWindInfo("34")); 
     System.out.println(myWeather.getWindInfo("39")); 
    } 
} 

当我运行该程序,我得到 海拔天气39000英尺是192652 风向:210度 风速:19节 风温:41 C 。 。 。

而是得到这个信息对于所有海拔像我一样当壳39不正确有

intPost = 63 

如何让我的代码工作,所以它打印出的所有高度,而不是仅在过去的一个天气输出?

编辑:只是想出了一些更多的信息,当最后一种情况是3而不是2时,它的工作原理是因为它不编译所有情况下的最后一种情况,当case39执行时它唯一的情况下运行

+1

为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2013-03-10 06:57:35

+0

好的我在发布一个问题之前遇到了问题,当我缩短了时间并且忽略了代码的一个关键部分,所以我只是把这里的一切放在了哪里,哪部分是过度的而不是必需的? – 2013-03-10 07:03:00

+0

switch语句中的“default”在哪里? – 2013-03-10 07:03:59

回答

0

我没有看到问题 - 只是将代码复制到一个文件中,编译并运行它......结果在最后,我得到了所有海拔高度的结果!

public class P4 
{ 
    static String strStationWeather = "SAN 1905 1808+24 1512+17 1209+10 1708-06 2016-16 211831 211941 192652" ; 

    public static void main(String[] args) 
    { 
    //Create the myWeather object 
     NWSFB myWeather = new NWSFB(strStationWeather); 
    //use myWeather to get the weather at various altitudes 
     System.out.println("Sation ID: " + myWeather.getStationID(strStationWeather)); 
     System.out.println(myWeather.getWindInfo("03")); 
     System.out.println(myWeather.getWindInfo("06")); 
     System.out.println(myWeather.getWindInfo("09")); 
     System.out.println(myWeather.getWindInfo("12")); 
     System.out.println(myWeather.getWindInfo("18")); 
     System.out.println(myWeather.getWindInfo("24")); 
     System.out.println(myWeather.getWindInfo("30")); 
     System.out.println(myWeather.getWindInfo("34")); 
     System.out.println(myWeather.getWindInfo("39")); 
    } 
} 

class NWSFB 
{ 
    /** A class variable containing the Station Weather */ 
    private String strWeather ; 

    /** The Constructor */ 
    public NWSFB(String strVar) 
    { 
     strWeather = strVar; 
    } 

    /** A method that finds the station */  

    public String getStationID(String strVar) 
    { 
    String stationId = strVar ; 
    return stationId.substring(0,3); 
    }  

public String getWindInfo(String strAlt) 
{ 
    String strRet; 
    strRet = "The altitude weather for " + strAlt + "000 feet is " +  getAltitudeWeather(strAlt) 
     + "\nWind Direction:" +getWindDir(strAlt) +"0 degrees" 
     + "\nWind Speed:" +getWindSpeed(strAlt) + " knots" 
     + "\nWind temperature:" +getWindTemperature(strAlt) + "C" 
     + "\n. . ." 
     + "\n"; 

    return strRet; 
} 

private int getPos(String strAlt) 
{ 
    int intAlt; 
    int intPos =0; 
    intAlt = Integer.parseInt(strAlt); 
    switch (intAlt) 
    { 
    case 3: 
     intPos = 4; 
     break; 
    case 6: 
     intPos = 9; 
     break; 
    case 9: 
     intPos = 17; 
     break; 
    case 12: 
     intPos = 25; 
     break; 
    case 18: 
     intPos = 33; 
     break; 
    case 24: 
     intPos = 41; 
     break; 
    case 30: 
     intPos = 49; 
     break; 
    case 34: 
     intPos = 56; 
     break; 
    case 39: 
     intPos = 62; 
     break; 
    } 

    return intPos; 
} 

public String getAltitudeWeather (String strAlt) 
{ 
    int intPosition = getPos(strAlt) ; 
    String strPos = strWeather.substring(intPosition, intPosition+7); 
    return strPos ; 
} 

//get wind direction 
public String getWindDir(String strAlt) 
{ 
    String strPos = getAltitudeWeather(strAlt); 
    return strPos.substring(0,2); 
} 

//get wind speed 
public String getWindSpeed(String strAlt) 
{ 
    String strPos = getAltitudeWeather(strAlt); 
    return strPos.substring(2,4); 
} 

//get wind temperature 
public String getWindTemperature(String strAlt) 
{ 
    String strPos = getAltitudeWeather(strAlt); 
    return strPos.substring(4,7); 
} 
} 

/* Output: 
Sation ID: SAN 

The altitude weather for 03000 feet is 1905 18 
Wind Direction:190 degrees 
Wind Speed:05 knots 
Wind temperature: 18C 
. . . 


The altitude weather for 06000 feet is 1808+24 
Wind Direction:180 degrees 
Wind Speed:08 knots 
Wind temperature:+24C 
. . . 


The altitude weather for 09000 feet is 1512+17 
Wind Direction:150 degrees 
Wind Speed:12 knots 
Wind temperature:+17C 
. . . 


The altitude weather for 12000 feet is 1209+10 
Wind Direction:120 degrees 
Wind Speed:09 knots 
Wind temperature:+10C 
. . . 


The altitude weather for 18000 feet is 1708-06 
Wind Direction:170 degrees 
Wind Speed:08 knots 
Wind temperature:-06C 
. . . 


The altitude weather for 24000 feet is 2016-16 
Wind Direction:200 degrees 
Wind Speed:16 knots 
Wind temperature:-16C 
. . . 


The altitude weather for 30000 feet is 211831 
Wind Direction:210 degrees 
Wind Speed:18 knots 
Wind temperature:31 C 
. . . 


The altitude weather for 34000 feet is 211941 
Wind Direction:210 degrees 
Wind Speed:19 knots 
Wind temperature:41 C 
. . . 


The altitude weather for 39000 feet is 192652 
Wind Direction: 10 degrees 
Wind Speed:92 knots 
Wind temperature:652C 
. . . 
*/ 
+0

我刚刚将这段代码复制并粘贴到我的IDE中,但仍然只能得到最后一个高度的结果,你知道为什么会发生这种情况吗? – 2013-03-10 07:34:26

+1

@AlexChapp - 您的IDE有点困惑。关闭你的IDE。现在,从命令行,使用'javac'重新编译所有文件并使用'java'运行它。 – 2013-03-10 07:55:08

+0

从头开始创建一个新项目粘贴我的代码,它现在可以正常工作,所以你的权利让我的IDE感到困惑 – 2013-03-10 08:03:54