Дополнительное значение во входном потоке при выполнении кода за пределами Intellij

#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 я бы обычно использовал сканер, но я хотел понять, почему возникает эта разница.