2017-01-16 7 views
0

Часть моего кода Java не работает. Я довольно новичок в java и разрабатываю некоторые новые изменения в среде. Моему классу было предложено построить калькулятор температуры ветра. Моя основная проблема заключается в том, что мой код работает до for (ws = wsp; ws < = c; ws + = 0,5), а затем останавливается.Часть кода не работает

import java.util.*; 
class Assign1 
{ 
    public static void main(String args[]) 
{ 
    Menu user = new Menu(); 
    Menu.mainmenu(); 
    user.acceptSelection(); 
} 
} 
class Menu 
{ 
    public static void mainmenu() 
{ 
    System.out.println("Temperature Analysis MENU"); 
    System.out.println("1.W)ind Chill Temperature"); 
    System.out.println("0.E)xit"); 
    System.out.println("Enter Selection:"); 
} 
public void acceptSelection() 
{ 
    Scanner stdin = new Scanner(System.in); 
    String selection = stdin.nextLine(); 
    char choice = selection.charAt(0); 

    switch(choice) 
    { 
    case 'W': 
    case 'w': 
    case '1': 
       processing.process(); break; 
    case 'E': 
    case 'e': 
    case '0': 
       System.out.println("E"); break; 
    } 
} 
} 
class processing 
{ 
public static void process() 
{ 
    Scanner stdin = new Scanner(System.in); 
    System.out.println("\n\n\n\n\n\n\n"); 
    System.out.print("Please enter START air temp in celsius (decimal) MUST be BELOW 9: "); 
    double sa = stdin.nextDouble(); 
    System.out.print("Please enter END air temp in celsius (decimal) MUST be BELOW 9: "); 
    double ea = stdin.nextDouble(); 
    System.out.print("Please enter wind speed (decimal) FROM 8km/h to: "); 
    double w = stdin.nextDouble(); 
    System.out.println("\n==================================================================\n"); 
    calculation(sa, ea, w); 

} 
public static void calculation(double a, double b, double c) 
{ 
    double wsp = 8.0; 
    double airTemp; 
    double ws; 
    int size = 150; 
    double[] wChill = new double[size]; 
    int count = 0; 
    System.out.print(" " + a); 
    while(a <= b) 
    { 
     System.out.print(" " + a); 
     a +=5; 
     count++; 
    } 
    System.out.print(" " + b); 
    int count2 = 0; 
    while(wsp <= c) 
    { 
     count2++; 
     wsp += 0.5; 
    } 
    double[][] chart = new double[count2][count]; 
    int i = 0, j = 0, k = 0; 

Здесь он перестает работать. Я не могу заставить его распечатать мой цикл. Любая помощь в исправлении моей проблемы будет оценена, а также заметки для моего кода, поскольку я пытаюсь улучшить. Я использую JGrasp, если это помогает.

 for (ws = wsp; ws <= c; ws += 0.5) 
    { 
    System.out.println(ws + " "); 
    for (airTemp = a; airTemp <= b; airTemp += 5.0) 
    { 
     if ((ws + 0.5) > c) 
     { 
     System.out.printf("%2d %2d", c , chart[k][i]); 
     } 
     else 
     { 
     wChill[i] = (13.12 + (0.6215*airTemp)+(-11.37*Math.pow(ws, 0.16))+(0.3965*airTemp*Math.pow(ws, 0.16))); 
     chart[k][i] = wChill[i]; 
     System.out.print(chart[k][i] + " "); 
     } 
     i++; 
    } 
    k++; 
    } 


} 


} 
+3

Как он перестает работать? Сбой? Вышли неправильные значения? Он переходит в бесконечный цикл? Пожалуйста, добавьте дополнительную информацию о том, что пойдет не так, и ваши значения для 'a',' b' и 'c' (которые я настоятельно рекомендую переименовать в более значимые имена типа' startTemp', 'endTemp' и' maxWindSpeed'. и Eclipse имеет встроенный отладчик, научитесь использовать его, поскольку установка точки останова на 'for (ws = wsp; ...' будет очень информативной. –

+0

Добро пожаловать в Stack Overflow! Чтобы дать вам отличный ответ, помогите нам, если у вас есть взгляд на [ask], если вы еще этого не сделали. Это может быть полезно, если вы можете предоставить [mcve]. – Mat

ответ

1

Согласно вам код у вас есть время цикла

while(wsp <= c) {...} 

то есть цикл

for (ws = wsp; ws <= c; ws += 0.5) 

так, как вы можете увидеть ws присваивается значение wsp, которое имеет в то время, когда уже превышено значение c

+0

Большое вам спасибо! Я ценю это. –

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

  • Нет связанных вопросов^_^