2014-11-05 3 views
-4

Назначение:печать слов последовательно в обратном порядке и в том же порядке?

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

Пример ввода:

my name is raghavendra 

Пример вывода:

ym name si raghavendra 

Вот то, что я до сих пор:

import java.util.*; 

class ReverseString2 { 
    public static void main(String[] args) { 
     Scanner sc = new 
+1

вот как НЕ задавать вопрос !! – Andy

+0

Пожалуйста, правильно отформатируйте свой вопрос и покажите, что вы пробовали, который не работает – mdewitt

ответ

0

Основываясь на ваш вопрос, я хотел бы использовать StringBuilder. Потому что, когда индекс является четным, он имеет полезную функцию reverse(). Я считаю, что вам нужно что-то вроде

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    while (sc.hasNextLine()) { 
     String line = sc.nextLine(); 
     // The \\s+ pattern matches one or more white-space characters. 
     String[] words = line.split("\\s+"); 
     for (int i = 0; i < words.length; i++) { 
      if (i != 0) { 
       System.out.print(' '); 
      } 
      StringBuilder sb = new StringBuilder(words[i]); 
      // Reverse every other word. 
      if (i % 2 == 0) { 
       sb.reverse(); 
      } 
      System.out.print(sb); 
     } 
     System.out.println(); 
    } 
} 
0

Другим решением было бы использовать charAt. Код будет выглядеть примерно так:

public String invertEvenWords(String line) {  

    String result = ""; 
    String[] words = line.split("\\s+"); 

    for (int i = 0; i < words.length; i++) { 

     /* The n-th word is reversed if n i even. */ 
     if (i % 2 == 0) { 
      String inv = ""; 
      for (int j = 0; j < words[i].length(); j++) { 
       char ch = words[i].charAt(j); 
       inv = ch + inv; 
      } 
      result += inv + " "; 

     /* Otherwise the word isn't reversed. */ 
     } else { 
      result += words[i] + " "; 
     } 
    } 

    return result; 

}