#java #intellij-idea #system.in
#java #intellij-идея #system.in
Вопрос:
Итак, я пытаюсь понять, как работают потоки в java, и я написал некоторый код, который должен принимать 2 целых числа из одной цифры и возвращать их сумму.
Вот рабочий код в intellij:
public class practice {
public static void main(String[] args) throws IOException {
int x = Character.getNumericValue((char)System.in.read());
System.in.read(); // reads the -1 so that input stream is now empty
int y = Character.getNumericValue((char)System.in.read());
System.out.println(x y);
}}
И вот рабочий код за пределами intellij, в eclipse или где-то еще:
public class practice {
public static void main(String[] args) throws IOException {
int x = Character.getNumericValue((char)System.in.read());
System.in.read();
System.in.read();
int y = Character.getNumericValue((char)System.in.read());
System.out.println(x y);
}}
Мне пришлось добавить дополнительный System.in.read(), поскольку в потоке каким-то образом есть другое значение, чтобы проверить это, я напечатал это значение на консоли и получил его значение как 13, которое я связал с «возвратом каретки» из таблицы ASCII, что такоевозврат каретки, и почему это не происходит в intellij?
Спасибо за любую помощь.
Комментарии:
1. Возврат каретки — это в основном
r
символ, в отличие от разрыва строки, который естьn
. Windows имеет тенденцию добавлять оба в конце строки. Если вы хотите получить более подробную информацию о том, что это такое и почему это называется «возврат каретки», вы можете провести некоторое исследование в Интернете 🙂2. Кстати, вместо чтения символов по одному вы можете использовать
Scanner
.3. Yh я бы обычно использовал сканер, но я хотел понять, почему возникает эта разница.