2016-04-08 23 views
0
public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

     int H = 0; 

     System.out.println("Enter the *insert whatever the formula thing is called*"); 
     String Form = input.next(); 
     //System.out.println(Form); 
     double Total = 0; 

     if (Form.contains("H") == true) 
     { 
      H = Form.indexOf("H", H); 
      //System.out.println(H); 
      if (Form.substring(H+1).matches("[1-999].*") == true) 
      { 
       String M = Form.substring(H+1); 
       System.out.println(M); 
       int M2 = Integer.parseInt(M); 
       Total = Total + (1.008 * M2); 
       System.out.println(Total); 
      } 
      else 
      { 
       if (Form.substring(H+1).matches("e") == true) 
       { 
         System.out.println("Found 'e'"); 
         //System.out.println(H); 
         if (Form.substring(H+2).matches("[1-999].*") == true) 
         { 
         String M = Form.substring(H+2); 
         System.out.println(M); 
         int M2 = Integer.parseInt(M); 
         Total = Total + (4.003 * M2); 
         System.out.println(Total); 
         } 
         else 
         { 
         Total = Total + 4.003; 
         System.out.println(Total); 
         } 
       } 
       else 
       { 
        Total = Total + 1.003; 
        System.out.println(Total); 
       } 
     } 
     //---------------------------------------------------------------------- 


    } 

} 
} 

için tanınan, ancak heres bölüm im ilgili sorun yaşıyorsanız değildir olma:Değişken bütün kod ise Beyanı

if (Form.substring(H+1).matches("e") == true) 
       { 
         System.out.println("Found 'e'"); 
         //System.out.println(H); 
         if (Form.substring(H+2).matches("[1-999].*") == true) 
         { 
         String M = Form.substring(H+2); 
         System.out.println(M); 
         int M2 = Integer.parseInt(M); 
         Total = Total + (4.003 * M2); 
         System.out.println(Total); 
         } 
         else 
         { 
         Total = Total + 4.003; 
         System.out.println(Total); 
         } 
       } 
       else 
       { 
        Total = Total + 1.003; 
        System.out.println(Total); 
       } 

Ben bu küçük bölümü ile yaşıyorum sorun ben çalıştığınızda olmasıdır "He9" girmek için, tüm ilk if ifadesini atlar ve son başka ifadeye gider, ama "He" koyarsam ilk If If deyimi için çalışır ve ikincisini atlar ve 2. sonuncu sonuncu ifadeye gider (olması gerektiği gibi).

Ve herhangi biriniz merak ettiğiniz durumda, bu okul projesi için = P.

+0

Değişkenleri büyük harflerle adlandıran kötü alıştırma. Sözdizimi vurgulayıcıları sınıf olduklarını düşünür;) –

+0

Java adlandırma kurallarına uyun: değişkenler küçük harflerle başlar. Ayrıca, onlar için daha iyi isimler seçin. M, M2, H, vb. Neyi temsil eder. Onları doğru bir şekilde isimlendiremezseniz, bunun ne anlama geldiğini bilmediğiniz anlamına gelir ve biz de değiliz. Bunları açık bir şekilde isimlendiremezseniz, bu yönteminizin çok uzun olduğu ve bölünmesi gerektiği anlamına gelir. Son olarak 'if (someExpression == true)' gereksizdir. Sadece 'if (someExpression) 'seçeneğini kullanın –

+0

Ayrıca 4.003, 1.003 vb. Sihirli numaraları için adlandırılmış sabitleri tanımlamanız gerekir. PI, PLANCK_CONSTANT veya AGE_OF_THE_CAPTAIN'i tekrar eden anlamsız sayılardan daha net görmek daha doğru olur. –

cevap

0

sorun He9 için beklediğiniz gibi Form.substring(H + 1)e dönmez, o e9 döndürür. Form.substring(H + 1, 2) yapın.

Ayrıca, ifadelerde bir şey olup olmadığını kontrol etmenize gerek yoktur. Ayrıca, değişkenleri adlandırma için bazı en iyi uygulamaları kontrol edin.