2013-09-15 2 views
-3

Я начал несколько демо, которые все отлично работали. Недавно я усилил сложность и собрал программу рисования, которая разрабатывает область в метрической и имперской областях. Хотя у меня нет ошибок компиляции, когда я пытаюсь запустить программу в Eclipse, она пропускает часть вычисления. Надеюсь, кто-нибудь может помочь:не могу получить код для расчета площади

//program begin 
package paintCalculation; 

import java.util.Scanner; 

public class PaintCoverageV1 
{ 

public static void main(String[] args) 
{ 
    //Variables 
    double roomArea = 0, roomHeightSq = 0, roomWidthSq = 0, coverage = 172.22, wastage = 1.10; 
    double roomHeightRec, roomWidthRec, roomLengthRec; 
    double totalpaintgallons = (roomArea/coverage) * wastage; 
    double totalpaintlitres = totalpaintgallons * (4.54); 
    double metresconversion = 10.7; 
    char areaKnown, Y = 0, N = 0; 
    char con, I = 0, M = 0; 
    char roomType, S = 0, R = 0; 


    //Heading 
     System.out.println("Paint Coverage Calculator"); 

     Scanner keyboard = new Scanner(System.in); 

    //areaKnown 
     System.out.println("Do you know wall area? (Y for YES, N for NO) "); 
     areaKnown = keyboard.next().charAt(0); 

      if (areaKnown == Y) 
      { 
      System.out.println("Enter room area "); 
      roomArea = keyboard.nextDouble(); 
      } 

      else if (areaKnown == N) 
      { 
      //roomType 
      System.out.println("Enter room shape (S for Square, R for Rectangle) "); 
      roomType = keyboard.next().charAt(0); 

       if (roomType == S) 
       { 
       System.out.println("Enter wall height "); 
       roomHeightSq = keyboard.nextDouble(); 

       System.out.println("Enter wall width "); 
       roomWidthSq = keyboard.nextDouble(); 

       roomArea = (roomHeightSq * roomWidthSq) * 4; 
       } 

       else if (roomType == R) 
       { 
       System.out.println("Enter wall height "); 
       roomHeightRec = keyboard.nextDouble(); 

       System.out.println("Enter wall length "); 
       roomLengthRec = keyboard.nextDouble(); 

       System.out.println("Enter wall width "); 
       roomWidthRec = keyboard.nextDouble(); 

       roomArea = ((roomHeightRec * roomWidthRec) + (roomLengthRec * roomHeightRec)) * 2; 
       } 
      } 
{ 
    //metricConversion 

     System.out.println("Which conversion is required? (M = Metric, I = Imperial)"); 
     con = keyboard.next().charAt(0); 

     keyboard.close(); 
     if (con == I) 
     { 
      System.out.print("Total amount of paint in gallon(s) required is " + totalpaintgallons); 
      System.out.print("Total amount of paint in litre(s) required is " + totalpaintlitres); 
     } 
     else if (con == M) 
     { 
      coverage = coverage/metresconversion; 
      System.out.print("Total amount of paint in gallon(s) required is " + totalpaintgallons); 
      System.out.print("Total amount of paint in litre(s) required is " + totalpaintlitres); 
     } 
     } 
} 
} 

//program end 
+1

Пожалуйста, используйте термин «код спагетти» в Google. И никогда не делай этого снова! (на самом деле это будет квалифицироваться как «спагетти с фрикадельками» ...) – ppeterka

ответ

2

Вы должны изменить

 if (areaKnown == Y) 

в

 if (areaKnown == 'Y') 

и так далее.

Ваш текущий код сравнивает areaKnown со значением переменной Y, которая равна нулю, вместо сравнения с символом 'Y'.

Смежные вопросы