Skip to main content

Исправление ошибок

90% работы программиста - это поиск ошибок, поэтому рассмотрим здесь основные приёмы.

Напишем программу, которая считывает с клавиатуры два числа и выводит их сумму.

Java

Слово Main подчёркнуто красной волнистой чертой, ещё несколько слов просто красные. Так IDEA отображает ошибки, чтобы их исправить нужно один раз кликнуть по выделенному слову. Например, по Main.

Если немного подождать, появится красная лампочка и подсказка, в чём ошибка.

Java

Чтобы её исправить в автоматическом режиме, нужно нажать сочетание клавиш Alt+Enter. Появится контекстное меню Можно просто нажать Enter, и тогда выполнится исправление по умолчанию.

В нашем случае система говорит, что отсутствует указание пакета com.company.

случае вариант исправления всего один, но дальше вы увидите, что бывает несколько. Чаще всего срабатывает, если выбрать вариант исправления по умолчанию. Если вам нужен другой вариант, его можно выбрать также при помощи мыши. Просто кликните по выбранному.

Java

После исправления у нас добавилась строчка package com.company;

Она обязательна, если исполняемый файл находится в одном из пакетов. В нашем случае, напомню, пакет называется com.company.

Java

Теперь кликнем по слову Scanner в седьмой строчке. Если после этого отвести курсор от этого слова и снова навести на него, то появится подсказка, как на скрине. Жмём Alt+Enter,

Java

после этого Enter.

Java

В итоге у нас добавилась строка импорта класса. Что такое класс рассказано в следующей главе. Импорт позволяет использовать код, написанный за нас. Но для этого нам нао явно сказать, где именно искать чужой код. Ведь разные программисты могли назвать свои классы одинаково, а суть у них абсолютно разная. Поэтому они собирают свои структуры в те самые пакеты.

Для того, чтобы найти нужный именно нам класс, следует указать компилятору, где его искать командой.

import java.util.Scanner;

В нашем случае нужный нам класс Scanner лежит в библиотеке java.util. То, что пакет начинается с java, говорит нам о том, что сам класс создан разработчиками java. Все пакеты с таким началом ещё называют "ядром" или Java Core.

Java

У нас осталась одна ошибка. Это - волнистая черта в конце строки номер 13. Если кликнуть по волне и немного подождать, появится подсказка, что ожидается ;. Жмём Alt+Enter,

Java

после этого Enter.

Java

Ошибка исправлена. обратите внимание, что слово Main слева от кнопки запуска программы перестал быть подчёркнутым. Это означает, что ошибок компиляции вообще больше нет, и теперь возможны только ошибки запуска.

Java

Вот работающий код программы

package com.company;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
// создаём сканер для чтения переменных с консоли
Scanner sc = new Scanner(System.in);
// читаем первое значение и кладём его в переменную a
int a = sc.nextInt();
// читаем первое значение и кладём его в переменную b
int b = sc.nextInt();
// выводим их сумму
System.out.println(a+b);
}
}

Теперь запустим программу

Java

Поначалу окно вывода программы пустое. Программа ждёт, пока мы введём два целых числа. Scanner довольно умный, поэтому числа можно вводить через пробел, можно через несколько. Также значения можно разделять один или несколькими переносами строки. Конечно, если мы не считываем строковое значение. Речь именно о численных значениях.

Вводим два числа, получаем их сумму

Java

Но если мы попробуем сложить вещественное число и целое, то программа выдаст нам ошибку

Java

В первой строке ошибки указано, в каком потоке (пока что просто запомните, что вы работаете в главном потоке приложения main) и ошибка какого класса получена. В Java даже ошибки - это объекты. В нашему случае ошибка - это объект класса InputMismatchException

Такое происходит, когда ввод не соответствует ожиданию. В нашем случае ожидалось целое число, а получено вещественное.

О числах с плавающей запятой

Вещественные числа в программировании называются ещё числами с плавающей запятой. Строго говоря, далеко не все вещественные числа могут поместиться в переменную. Для нас важен символ разделения целой и вещественной части, он называется плавающая запятая. В русском языке этот разделитель обозначается ,, а в английском .. Поэтому если вы программируете в операционной системе с русским языком, то вещественные числа надо вводить, используя запятую, а в системе с английским - точку.

Последующие строки - это цепочка вызовов методов, которая спровоцировала ошибку.

Нижняя строчка содержит синюю ссылку. Если кликнуть на неё, среда перебросит нас прямо к строчке с ошибкой.