CDubb82 Ответов: 2

Как я могу использовать унарное приращение и декремент для этого


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

Я прикрепил ссылку на Хастебин (хастебин[^]), к вопросу, который у меня есть. Это также объясняет, что учитель хочет, чтобы мы делали.

Я, очевидно, не понимаю этого, и я готов поспорить, что это что-то очень простое, и я просто упускаю это из виду, но мне действительно нужна помощь.

Пожалуйста, помогите мне понять, что происходит.

Что я уже пробовал:

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

Christian Graus

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

Christian Graus

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

CDubb82

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

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

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

Christian Graus

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

CDubb82

Я чувствую, что на меня напали. Я очень хорошо понимаю, что это очень простая вещь, которая бесконечно раздражает меня, потому что это то, что я лично чувствую, что я должен быть в состоянии получить. Я действительно понимаю, как работают инкременты и декременты, но я не могу получить выходные данные, соответствующие номерам на ссылке, которую я разместил. Когда я пытаюсь заставить цикл выводить правильные числа, я получаю 126, 127, -128, но я не могу сопоставить вывод с тем, что находится на этой ссылке, и я не уверен, где я ошибаюсь

Christian Graus

Итак, какой у вас код? Вы его не отправили? Похоже, вам просто нужно изменить числа, которые вы увеличиваете и уменьшаете, пока они не совпадут?

CDubb82

При вводе кода с базой x, установленной на 126, я получаю следующее:

класс основной {
публичный статический пустота главный(строка[] аргументы) {
байт x = 126;


Системы.из.println(х++);
Системы.из.println(х);
Системы.из.код println(++х);
}
}

Они не соответствуют номерам, которые были размещены в Hastebin (сайт, который мне неоднократно говорили использовать для показа кода) Я не знаю, как это исправить

CDubb82

Учитель смотрит, чтобы увидеть, что числа соответствуют этим:

126
127
-127
-127
127
127
-127

но когда я делаю свой код, я получаю: 126, 127, -128. Где я ошибаюсь?

Christian Graus

Хммм... может быть, байт идет от 127 до -128? В таком случае, вам нужно сделать это ... дважды, верно?

Christian Graus

Кроме того, x++ возвращает x, а затем добавляет к нему 1, поэтому нам нужно, чтобы ++x добавил единицу к x и выдал новое значение. Я исправил свой ответ и запустил его, он работает

2 Ответов

Рейтинг:
15

Christian Graus

Таким образом, байт будет идти от 127 до -127, если вы увеличите его. Переменные оборачиваются вокруг своих максимальных и минимальных значений. Кроме того, если вы делаете x++, он возвращает x, а затем добавляет к нему 1. Поэтому вам нужно ++x, чтобы добавить 1 к x, а затем вывести его.

126
127
-127
-127
127
127
-127


Вот чего ты хочешь.

byte x = 126;


Вот с чего ты начинаешь. Так:

        System.out.println(x); // 126
System.out.println(++x); //127
x++;
System.out.println(++x); //-127
System.out.println(x); // -127
x--;
System.out.println(--x); //127
System.out.println(x); // 127
++x;
System.out.println(++x); //-127


Я запустил эту программу и она работает


CDubb82

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

Christian Graus

Не беспокойся, я рад, что смог помочь.

CDubb82

:) Спасибо вам за то, что вы работали со мной, хотя вначале я был очень оборонительным. Приношу свои извинения за то, что вел себя как придурок

Christian Graus

Вообще никаких забот. Я рад, что в конце концов мы туда добрались

Рейтинг:
1

CDubb82

Вообще-то, я тоже думал в этом направлении, Кристиан. Однако, когда вы запустите этот код в репл.это

class Main {
  public static void main(String[] args) {
   byte x = 126;

System.out.println(x); // 126
System.out.println(x++); //127
System.out.println(x++); //-127
System.out.println(x); // -127
System.out.println(x--); //127
System.out.println(x); // 127
System.out.println(x++); //-127

  }
}


Он выводит это 126, 126, 127, -128, -128, 127, 127


Christian Graus

Здесь есть две вещи. Во-первых, он оборачивается до -128. Во-вторых, x++ испускает x, а затем добавляет к нему 1. Вам нужен ++x. Итак, я исправил свое решение, и оно работает.