2014-10-28 8 views
1

где: Roteer = Поворот, ссылки = Left, Right = Rechts ....Java-Chars может вращаться влево, но не может вращаться вправо?

, кажется, что если вы вводите "Oliebol", 3 в roteerNaarLinks, на выходе будет 'bololie', который, как предполагается, бывает. Но если вы введете «Oliebol», 1 в roteerNaarRechts, выход будет «lOliebo», но он должен стать «llieboo», как я могу это исправить? :)

public class Roteer { 

     public static String roteerNaarLinks(String invoer, int n){ 
      String in = invoer; 
      int aantal = n; 

      for(int i = 0; i< aantal; i++){ 
       char firstLetter = in.charAt(0); 
       in = in.substring(1); 
       in = in + firstLetter; 
      } 

      return in; 
     } 
     public static String roteerNaarRechts(String invoer, int n){ 
      String in = invoer; 
      int aantal = n; 

      for(int y = n; y > aantal; y--){ 
       char lastLetter = in.charAt(in.length()-1); 
       in = in.substring(1); 
       in = lastLetter + in; 
      } 

      return in; 
     } 
} 
+1

Я не получаю этот выход. Для 'roteerNaarLinks (« Oliebol », 3)' Я получаю 'ebolOli' и' roteerNaarRechts («Oliebol», 1) 'Я получаю' Oliebol' – Ian2thedv

+0

Да почему-то roteerNaarLinks действительно работает, но roteerNaarRechts не работает, он должен дать «lOliebo» – Ivaro18

+0

Почему существует 'for (int y = n; y> aantal; y -) {', а не просто 'for (int i = 0; i

ответ

0

for никогда не будет выполняться в roteerNaarRechts. Вы устанавливаете aantal = n, а затем y = n, а затем вы говорите, что цикл должен выполняться в то время как y > aantal, что никогда не будет истинным. Измените его на

для (INT у = п, у> = 0; y--)

0

Вместо конкатенации выходной строки посимвольно я хотел бы предложить следующее решение (которое еще может быть настроен, в зависимости от ваших требований)

public class Roteer { 

    public static String roteerNaarLinks(String invoer, int n) { 
     StringBuilder sb = new StringBuilder(invoer.length() * 2); 
     sb.append(invoer).append(invoer); 
     int offset = n % invoer.length(); 
     return sb.substring(offset, offset + invoer.length()); 
    } 

    public static String roteerNaarRechts(String invoer, int n) { 
     StringBuilder sb = new StringBuilder(invoer.length() * 2); 
     sb.append(invoer).append(invoer); 
     int offset = invoer.length() - n % invoer.length(); 
     return sb.substring(offset, offset + invoer.length()); 
    } 

    public static void main(String[] args) { 
     final String inputString = "Oliebol"; 
     System.out.println("--- roteerNaarLinks"); 
     for (int i = 0; i <= inputString.length(); i++) { 
      System.out.println(roteerNaarLinks(inputString, i)); 
     } 

     System.out.println("--- roteerNaarRechts"); 
     for (int i = 0; i <= inputString.length(); i++) { 
      System.out.println(roteerNaarRechts(inputString, i)); 
     } 
    } 
} 
Смежные вопросы