2013-12-24 44 views
0

您好我有以下代碼,用於計算從editText獲取子網掩碼輸入,我在單個if行上執行多個條件。基本上我已經打破了使用.split子網的4個部分,然後保存在數組中。無論如何,這是代碼。我應用多個條件時得到android運行時錯誤,android

 @Override 
     public void onClick(View arg0) { 
      String strings = String.valueOf(inputIp.getText().toString()); 
      final String parts[] = strings.split("\\."); 
        String block1 = parts[0]; 
        String block2 = parts[1]; 
        String block3 = parts[2]; 
        String block4 = parts[3]; 

        Double firstblock = Double.parseDouble(block1); 
        Double secondblock = Double.parseDouble(block2); 
        Double thirdblock = Double.parseDouble(block3); 
        Double fourthblock = Double.parseDouble(block4); 

        String substring = String.valueOf(inputSubnet.getText().toString()); 
        String subPart[] = substring.split("\\."); 
         String subBlock1 = subPart[0]; 
         String subBlock2 = subPart[1]; 
         String subBlock3 = subPart[2]; 
         String subBlock4 = subPart[3]; 

         Double firstSubBlock = Double.parseDouble(subBlock1); 
         Double secondSubBlock = Double.parseDouble(subBlock2); 
         Double thirdSubBlock = Double.parseDouble(subBlock3); 
         Double fourthSubBlock = Double.parseDouble(subBlock4); 

      if(firstblock <= 127){ 

     //problem  
if((firstSubBlock == 255 || firstSubBlock !=0) && (secondSubBlock ==0 && secondSubBlock !=null) &&(thirdSubBlock== 0 && thirdSubBlock !=null) &&(fourthSubBlock == 0 && fourthSubBlock !=null)){ 
       int rangedisplay = (int) (Math.pow(2, 24)-2); 
       showClass.setText("A"); 
       rangeDisplay.setText(rangedisplay); 

       }else{ 

       Toast.makeText(getApplicationContext(), "Please enter a valid subnet mask !!", Toast.LENGTH_SHORT).show(); 

       } 


      }else if(firstblock <=191){ 

       if((firstSubBlock == 255) && (secondSubBlock==255) &&(thirdSubBlock== null) &&(fourthSubBlock == null)){ 
       int rangedisplay = (int) (Math.pow(2, 16)-2); 
       showClass.setText("B"); 
       rangeDisplay.setText(rangedisplay); 
       }else{ 

       Toast.makeText(getApplicationContext(), "Please enter a valid subnet mask !!", Toast.LENGTH_SHORT).show(); 

       } 

      }else if(firstblock <=223){ 

       if((firstSubBlock == 255) && (secondSubBlock==255) &&(thirdSubBlock==255) &&(fourthSubBlock == null)){ 
        int rangedisplay = (int) (Math.pow(2, 8)-2); 
        showClass.setText("C"); 
        rangeDisplay.setText(rangedisplay); 

        }else 
        { 

        Toast.makeText(getApplicationContext(), "Please enter a valid subnet mask !!", Toast.LENGTH_SHORT).show(); 

        } 
      }else{ 

       Toast.makeText(getApplicationContext(), "Please enter a valid Ip Address !!", Toast.LENGTH_SHORT).show(); 

      } 





     } 

在下面的行我評論「問題」我傳遞了多個條件,即使我輸入了確切的真實條件。我得到運行時錯誤或吐司消息說「輸入一個有效的子網掩碼!!」這是不對的,因爲我已經輸入了所有應該執行if塊的條件。非常感謝您的參與。任何建議,將不勝感激,因爲這是我的大學任務,我接近最後期限。再一次感謝你。

回答

0

我發現這個問題,int變量的隨機顯示沒有被解析成一個String。這是問題所在,但無論如何,謝謝你。

0

嘗試使用int而不是Double。將double與==直接比較並不是在Java中執行的正確方法。

相關問題