Чтение онлайн

на главную - закладки

Жанры

Основы программирования с Java
Шрифт:

Когда вы нажмете return, вы увидете, что окно редактора появляется с выражением, выделенным в точке останова.

Что еще более важно, при этом выскочило окно отладчика.

Это позволит вам просматривать текущее состояние программы, когда выполнение останавливается в точке останова.

Вы можете увидеть окно локальных переменных и изучить их значения.

Вы можете видеть, что значения весов определены при инициализации, и examScore, labScore и hwScore,

все получили значение 100,0.

Вы можете продолжить выполнение программы, нажав на кнопку 'step', которая будет выполнять следующую инструкцию в программе.

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

Давайте просто использовать кнопку step на данный момент.

Вы можете видеть, что следующее утверждение подсвечено в окне редактора.

Это означает, что программа только что закончила выполнение инструкции для вычисления examScore.

Если изучить значения переменных снова, вы найдете, что все остальные значения остаются такими же, за исключением того, что для examScore теперь дается значение 0.0.

Поэтому здесь должна быть некоторая проблема с выполнением этого выражения.

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

Опять же, мы получаем 0 для labScore а затем 0 для hwScore, так что должны быть некоторые общие проблемы с расчетом и обновлением оценок, использующих эти выражения присваивания.

Можете ли вы найти эту проблему? Намек, что это связано с делением целых, которое я обсуждал ранее.

Обратите внимание, что вес экзаменов со значением 70 имеет тип int. Когда он делится на 100, что также является целым числом, результат деления 0,7 будет урезан и возвращает 0 в результате.

Далее 0 умножается на examScore, результирующее значение равно 0, который затем присваивается examScore.

Та же проблема возникает в labScore и hwScore.

И эту проблему легко исправить. Для этого нужно заменить 100 на 100,0, и, если вы помните правило преобразования типов, которое мы только что обсудили, когда целое делится на число с плавающей точкой, результат будет преобразован в число с плавающей точкой.

Давайте теперь прекратим предыдущее выполнение программы и скомпилируем программу снова.

Теперь также нет ошибки синтаксиса.

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

Давайте попробуем выполнить программу, нажав кнопку Run.

Если ввести те же баллы 100, 100 и 100, вычисляется окончательная оценка 100 и все сейчас должны быть счастливы.

Вопросы

Задача

Каким вы думаете будет значение переменной result после выполнения следующего сегмента Java кода?

int i = 1234567890;

float f = i;

int result = i – (int)f;

1. 0

2. nonzero

3. an error

Ответ: 2.

Оба int

и float 32-битные типы.

Все 32-битные int используются для представления целой части числового значения.

Тем не менее, для float, некоторые биты используются для представления целой части и некоторые для десятичной части.

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

Таким образом, вычисление разности между int и float переменных одного и того же большого численного значения, не всегда может дать результат 0.

Вы можете проверить код, указанный выше, в программе Java.

Обсуждение отладки

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

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

Ниже пример программы содержит ряд ошибок. Попробуйте определить все эти ошибки.

Ответ:

Простой IO

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

Большинство языков программирования высокого уровня обеспечивают стандартные методы ввода и вывода программ для получения информации от пользователей и вывода результатов пользователям для просмотра.

В Java, стандартные методы для вывода текста в консоль являются System.out.println и System.out.print.

System представляет собой класс Java.

Вы видели println в программе HelloWorld.

Разница между print и println в том, что println будет переводить на новую строку после печати, в то время как print останется на той же строке.

Технически, println и print являются методами класса PrintStream.

Обратите внимание, что они разделены точкой или оператором точка.

Я вернусь к этому, когда будем обсуждать классы, объекты и методы позже.

Есть аналогичные стандартные методы для ввода на основе класса Scanner, но он немного неуклюжий, поэтому здесь создан свой пользовательский класс ввода-вывода I/O с именем IO в качестве оболочки, который будет сочетать как ввод, так и вывод и, надеюсь, предоставляет более простой в использовании интерфейс ввода / вывода для вас.

Методы обертки очень часто используются в Java.

Они в основном предоставляют альтернативный интерфейс на основе существующих методов, чтобы удовлетворить определенной цели.

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

Я вернусь к классу Scanner, когда мы будем обсуждать файловый ввод/вывод.

Методами вывода являются IO.outputln и IO.output.

Вы видели их обоих в программе CourseGrade.

Разница между ними состоит в том, что IO.outputln будет перемещаться на новую строку, в то время как IO.output останется на той же строке.

Поделиться:
Популярные книги

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Император Пограничья 7

Астахов Евгений Евгеньевич
7. Император Пограничья
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Император Пограничья 7

Выйду замуж за спасателя

Рам Янка
1. Спасатели
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Выйду замуж за спасателя

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Кодекс Крови. Книга I

Борзых М.
1. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга I

Восхождение Примарха 2

Дубов Дмитрий
2. Восхождение Примарха
Фантастика:
боевая фантастика
попаданцы
7.50
рейтинг книги
Восхождение Примарха 2

Лихие. Депутат

Вязовский Алексей
4. Бригадир
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Лихие. Депутат

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Искатель 2

Шиленко Сергей
2. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Искатель 2

Законы Рода. Том 3

Андрей Мельник
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Неудержимый. Книга XX

Боярский Андрей
20. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XX

Я князь. Книга XVIII

Дрейк Сириус
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я князь. Книга XVIII

Как я строил магическую империю 3

Зубов Константин
3. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 3

Личный аптекарь императора

Карелин Сергей Витальевич
1. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора