Переключение между операциями в цикле for-loop
Я начинающий Java, пожалуйста, несите меня. :) Я не узнал ничего подобного, if
такие утверждения и так далее, я только узнал о циклах, переменных и классах. Мне нужно написать один цикл, который производит следующий вывод:
10 0 9 1 8 2 7 3 6 4 5 5
Из сегмента видно, что разница между числами уменьшается на единицу, поэтому от 10 до 0 вычитается 10, затем от 0 до 9 добавляется 9, и она чередуется между добавлением и вычитанием.
Моя идея состояла в том, чтобы создать цикл, в котором моя переменная i = 10
уменьшается на 1 в цикле (i--
), но я не совсем уверен, как чередовать добавление и вычитание в цикле?
public class Exercise7 {
public static void main(String[] args) {
for(int i = 10; i >= 0; i--) {
System.out.print(i + " ");
}
}
}
Ответы
Ответ 1
Почему бы не иметь две дополнительные переменные и прирост один и уменьшить другую:
int y = 0;
int z = 10;
for(int i = 10; i >= 5; i--) {
System.out.print(z + " " + y + " ");
y++;
z--;
}
Выход:
10 0 9 1 8 2 7 3 6 4 5 5
Однако мы также можем сделать это без дополнительных переменных:
for(int i = 10; i >= 5; i--) {
System.out.print(i + " " + 10-i + " ");
}
Ответ 2
Я не думаю, что ОП на самом деле хотел, чтобы кто-то сделал для них свою домашнюю работу, поэтому я собираюсь ответить на вопрос, который они на самом деле спросили: как чередовать две операции в цикле (чтобы они могли сохранить алгоритм, с :)
).
Там отличный "трюк", который очень часто используется, когда мы хотим что-то делать с каждой итерацией на большинстве языков программирования. Вы определенно встретите это в своей жизни, и это может быть озадачительно, если вы не знаете, что происходит, так что вот оно!
Оператор modulo (%
) даст остаток от деления между его операндами.
Например, рассмотрим следующее: 7 ÷ 2 = 3.5
Когда вы работаете с целыми числами, вы должны сказать, что 7 ÷ 2 = 3
, тогда у вас останется 1
.
В этом случае, когда все переменные являются int
с, в Java, 7/2
будет 3
и 7 % 2
является 1
.
Это по модулю для вас!
Что интересно об этом операторе, так это то, что интересно о делении вообще, и в одном случае в частности: остаток от деления на 2
всегда равен 0
или 1
... и он чередуется ! Это ключевое слово здесь.
Здесь идет "трюк" (не совсем трюк, это в основном шаблон с учетом того, насколько широко он используется) для чередующихся операций над итерациями:
- взять любую переменную, которая увеличивается на каждую итерацию в цикле
- тест для остальной части деления этой переменной на
2
- если он
0
, сделайте что-нибудь, иначе (это будет 1
), возьмите альтернативный путь!
В вашем случае, чтобы ответить на ваш фактический вопрос (хотя другие не имеют хорошие моменты, я "м не пытается отнять у кого), вы могли бы рассмотреть возможность использования что - то вроде этого:
if( i % 2 == 0 ) {
// i is even, subtract
} else {
// i is odd, add
}
Это позволит вам продолжать использовать алгоритм, о котором вы изначально думали!
Ответ 3
public class exercise7 {
public static void main(String[] args) {
for(int i = 10; i >= 5; i--) {
System.out.print(i + " " + (10-i) + " ");
}
}
}
Ответ 4
Или вы можете сделать это таким образом, если вы хотите быть мудрецом;)
for(int i = 0, arr[] = {10,0,9,1,8,2,7,3,6,4,5,5}; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
Ответ 5
заменим i >= 0
при i >= 5
добавьте это: System.out.print((10-i--) + " ");
начиная с того, что вы сделали
public class Exercise7 {
public static void main(String[] args) {
for(int i = 10; i >= 5; ) {
System.out.print(i + " " + (10-i--) + " ");
}
}
}
Ответ 6
Что-то не нужно переоценивать:
public class Answer2 {
public static void main(String[] args) {
for (int i = 0; i <= 5; i++){
System.out.println(i);
System.out.println(10 - i);
}
}
}
редактировать
Вы МОЖЕТЕ и должны обобщать свою задачу. Вот пример того, как вы могли это сделать (я не буду писать метод, так как это ваша работа - вместо этого я изменю свой ответ, чтобы показать вам возможности)
public class Answer2 {
private static final Random RANDOM = new Random();
public static void main(String[] args) {
//You can use any upper bound for 'someLength'
int someLength = 1 + RANDOM.nextInt(20);
for (int i = 0; i <= someLength / 2; i++) {
System.out.println(someLength - i);
System.out.println(i);
}
}
}
Ответ 7
Это немного похоже на домашнее задание, поэтому я не буду давать вам рабочий код.
Но помните, что вы можете поместить несколько операторов печати внутри цикла for. Вам не обязательно проходить итерацию 10 раз, чтобы получить результат. 5 раз вполне достаточно. И, как уже сказано выше, цифры чередуются между я и 10-i, для правильного диапазона i.
Ответ 8
Кто сказал, что вы можете использовать только один System.out.print
в цикле?
for (int i=0; i < 5; i++) {
System.out.print((10 - i) + " " + (i + 1) + " ");
}
Ответ 9
Вы должны думать об обобщении серии. Как вы заметили, серия чередуется с добавлением и вычитанием. Кроме того, разница на каждом шаге уменьшается на единицу. Вы можете определить переменные для этих двух и отрегулировать их в цикле.
public static void main(String[] args) {
int term = 10;
int sign = 1;
for(int delta = 10; delta >= -1; delta--) {
System.out.print(term + " ");
sign = -1 * sign;
term = term + sign * delta;
}
}
Ответ 10
Я пробовал этот код. Это сработало для меня.
for(int i = 10; i >= 5; i--) {
System.out.print(i + " ");
System.out.print(10-i + " ");
}
Ответ 11
Просто запустите цикл, начиная с 0 или начиная с 10.
1. Если вы начинаете с 10
for(int i=10;i>=5;i--){
System.out.print(i + " " + (10-i) + " ");
}
2. Если вы начинаете с 0
for(int i=0;i<=5;i++){
System.out.print((10-i) + " " + i + " ");
}
Выход будет: 10 0 9 1 8 2 7 3 6 4 5 5
Ответ 12
Это здесь. Список результатов - это список комбинаций для создания 10; 10 0 9 1 8 2 7 3 6 4 5 5
10 + 0 = 10
9 + 1 = 10
8 + 2 = 10
7 + 3 = 10
6 + 4 = 10
5 + 5 = 10
int n = 10;
int half = n / 2;
if(n % 2 == 1){
half++;
}
for(int x = n; x >= half;x--){
int remainder = n % x;
if(remainder == 0){
remainder = n - x;
}
System.out.print(x);
System.out.print(" ");
System.out.println(remainder);
}
Ответ 13
int d = 0;
for(int i = 10; i >= 5; i--) {
System.out.print(i + " " + d + " ");
d++;
}