Переменная с, возможно, не была инициализирована

mysql_num_rows () указывает количество строк, возвращаемых запросом базы данных. В вашем случае всегда возвращается одна строка, потому что всегда есть одна сумма. Конечно, сумма может быть 0.

Возможно, будет хорошей проверкой ваш запрос в браузере запросов mysql. Возможно, вы ищете что-то вроде этого?

SELECT name, SUM(students_money) AS sum_money 
FROM students_table
GROUP BY name;

Это будет группировать суммы на основе имени. Чтобы пропустить 0 сум, вы можете добавить это:

HAVING sum_money > 0;
0
задан user7313053 18 March 2019 в 18:30
поделиться

3 ответа

«и на самом деле - он всегда будет инициализирован (потому что программа завершится, если не может быть инициализирован).»

Как компилятор узнает об этом? Кроме того, если он всегда будет инициализирован, тогда зачем вообще использовать try-catch? В твоей логике есть недостаток.

Вы можете переместить оставшуюся часть кода в блок try. Это сработало бы.

0
ответ дан Prashant Pandey 18 March 2019 в 18:30
поделиться

Компилятор не знает, что программа завершит работу, если она не может быть инициализирована . Просто переместите оставшуюся часть кода в try.

public static void main (String[] args) {
    try {
      Config c = new Config();
      final NetworkReporter np = new NetworkReporter(c.getValues().serverIP, c.getValues().serverPort, (short)(c.getValues().checkInterval * c.getValues().checksPerReport));
      IdleChecker idleChecker = new IdleChecker(c.getValues().checkInterval, c.getValues().checksPerReport, c.getValues().idleSensitivity, new IdleChecker.reportFunction() {
        public void report() {
            np.report();
        }   
      }); 
      idleChecker.start();
    } catch (Exception e) {
        System.err.println("Error while parsing/reading file: " + e.getMessage());
        System.exit(-1);
    }
}
0
ответ дан Alexis 18 March 2019 в 18:30
поделиться
System.exit(-1)

Не гарантирует , что ваша программа остановится. Если у вас есть своего рода ловушка отключения , или если вы находитесь в середине потоковой операции, это можно предотвратить. Таким образом, компилятор выдает ошибку.

Возможно, вы захотите, чтобы Exception покинул текущий слой.

Config c;

try {
    c = new Config();
} catch (final Exception e) {
    System.err.println("Error while parsing/reading file: " + e.getMessage());
    throw new YourCustomRuntimeException(e);
}

c.whatever();
0
ответ дан LppEdd 18 March 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: