2015-02-25 2 views
0

Я изучаю java и читаю о методах в учебнике. Существует пример программы для создания таблицы преобразования Цельсия в Фаренгейт. Я подумал, что было бы неплохо ввести в Eclipse и запустить программу. Программа приведена ниже. Даже думал, что это именно так, как текст в книге, я получаю следующее сообщение об ошибкеПеременная определена, но все еще не может быть разрешена.

с не может быть решена с переменной

В int f = (int) celsiusToFahrenheit, и в println(c + "C = " линиях. Похоже, что c определен в цикле for как int, поэтому не уверен, что не так. Любая помощь будет оценена.

/* 
* File: TermperatureConversionTable.java 
* --------------------- 
* This program creates a table of Celsius to Fahrenheit 
* equivalents using a function to perform the conversion. 
*/ 

import acm.program.*; 

public class TemperatureConversionTable extends ConsoleProgram { 

    public void run() { 
     println("Celsius to Fahrenheit table."); 
     for (int c = LOWER_LIMIT; c <= UPPER_LIMIT; c += STEP_SIZE); { 
      int f = (int) celsiusToFahrenheit(c); 
      println(c + "C = " + f + "F"); 
     } 
    } 
/* Returns the Fahrenheit equivalent of the Celsius temperature c. */ 
    private double celsiusToFahrenheit(double c) { 
     return 9.0/5.0 * c + 32; 
    } 

/* Private constants*/ 
    private static final int LOWER_LIMIT = 0; 
    private static final int UPPER_LIMIT = 100; 
    private static final int STEP_SIZE = 5; 
} 
+3

запятой перед открывающей скобкой в ​​течение цикла. –

+0

@RuchiraGayanRanaweera, если это не Java, что это такое? –

+1

Я уверен, что это на самом деле Java ..... И почему так много голосов, чтобы закрыть? –

ответ

3

Небольшая синтаксическая ошибка с точкой с запятой после выражения for в вашем цикле. Все остальное выглядит хорошо для меня.

for (int c = LOWER_LIMIT; c <= UPPER_LIMIT; c += STEP_SIZE); //<---remove the semicolon 
    { 
     int f = (int) celsiusToFahrenheit(c); 
     println(c + "C = " + f + "F"); 
    } 
2

Ваша проблема связана с циклом for, который никогда не зацикливается из-за дополнительной точки с запятой.

for (int c = LOWER_LIMIT; c <= UPPER_LIMIT; c += STEP_SIZE); { 
              remove this ^

Из-за точкой с запятой, то прекратить заявление, следующие брекеты просто изменить масштаб этого блока кода, который, в котором c является Infact не определен.

+0

, если вы можете объяснить, почему такое поведение происходит, когда у вас есть; в этом месте я с радостью проголосую u –

+0

Спасибо quix, но я думаю, что он искал расширение моего кода только ответа - я уже добавил в моем маленьком рекламном ролике о том, почему это так. –

+0

@quixotrykd благодарим вас за ввод. но я стараюсь предложить другим лучше ответить, чтобы другие могли узнать из него не только копию и ответ. –

1

Небольшая ошибка for Заявление.

for (int c = LOWER_LIMIT; c <= UPPER_LIMIT; c += STEP_SIZE); { 
      int f = (int) celsiusToFahrenheit(c); 
      println(c + "C = " + f + "F"); 
     } 

Ввод ; Перед { прекращает цикл без тела и что является причиной получения ошибки в переменной c не определен в организме.

См: The for statement

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