цикл до цикла

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

String alphabet = "abcdefghijklmnopqstuvwxyz";      
int x = 0;

for(x = alphabet.length() - 1; x > -1; x--) {
  System.out.print(alphabet.charAt(x));
  System.out.print(alphabet.toUpperCase());                 
}

Мне также нужно прекратить его, когда он достигнет A. Думаю, что-то вроде этого, но я не знаю, как сделать это в обратном направлении. Буду очень признателен за вашу помощь!

while(alphabet.length() < 26) {
  System.out.print(alphabet.charAt(x));  
  System.out.print(alphabet.toUpperCase());     
  if(x == A) {
    break;
  }     
}
 Luiggi Mendoza27 окт. 2012 г., 18:52
@ignis это был бы ответ.
 ignis27 окт. 2012 г., 18:50
«для (A; B; C) {тело;}» эквивалентно «A; в то время как (B) {тело; C;}»
 Amit Deshpande27 окт. 2012 г., 18:51
@ignis Вы должны добавить этот ответ :).
 antiguru27 окт. 2012 г., 18:51
Цикл while (alphabet.length () <26) {} никогда не прекратится.
 ignis27 окт. 2012 г., 18:56
... И нет необходимости перебирать строку (если вам нужен английский алфавит): начните с char c = 'Z', и, пока c> = 'A', напечатайте, а затем уменьшите c. Вы можете сделать это в одном заявлении «за».

Ответы на вопрос(4)

x = alphabet.length() - 1;
while( x > -1 )
    {
        System.out.print(  alphabet.charAt( x ));  
        System.out.print( alphabet.toUpperCase() );
        x--;
    }
for (initialization; condition; increment) {

}

такой же как:

{
    initialization;
    while(condition) {
       // body
       increment;
    }
}

Внешний блок создаетblock область для инициализированного параметра, который мы также получаем в цикле for. Но, если вы объявляетеfor-loop переменная вне цикла, то вы можете опустить этот внешний блок.

Теперь вы можете привязать цикл for к циклу while.

 user170751727 окт. 2012 г., 18:56
О, спасибо, это то, чего я не знал.
 Rohit Jain27 окт. 2012 г., 18:57
@ User1707517. Да уж. оба цикла работают точно так же с некоторой модификацией в структуре. :)
 Pshemo27 окт. 2012 г., 19:08
Я бы также поместил второй код во внешний блок, как{ initialization; while(condition) { body; increment;} } поскольку переменные объявлены вinitialization не будет доступен после этого блока.
 Daniel Fischer27 окт. 2012 г., 21:50
Перевод не так прост, если естьcontinueс в петле. вfor петляcontinue прыгает кincrement код, вwhile цикл, который будет пропущен. Не уверен, что это лучший способ лечения безgoto.
 Rohit Jain27 окт. 2012 г., 19:10
@Pshemo. Ах! правда. Хорошо поймал. Добавлю это. :) +1 на это.

Существует гораздо более простой способ перевернуть строку в Java.

public class StringReversalExample {
    public static void main(String[] args) {
      String alphabet = "abcdefghijklmnopqstuvwxyz";
      String reversedString = new StringBuilder(alphabet).reverse().toString();
      System.out.println(reversedString);
    }
}

Попробуй это:

public static void main(String[] args) {
  char[] alphabet =  "abcdefghijklmnopqstuvwxyz".toCharArray();
  int index = alphabet.length - 1;

  while (index >= 0) {
    System.out.println(alphabet[index--]);
  }
}

Это наиболее эффективное решение с минимальными затратами памяти.

Ваш ответ на вопрос