2010-03-11 3 views
-1

Я хочу напечатать строку «мое имя xxx» как «xxx is name my» без использования специальных методов (например, использовать методы пакета в java); спасибоString division

+6

Вы хотите использовать Java API без использования Java API? Это домашнее задание, не так ли? – skaffman

+2

«Строковое деление» звучит странно. – Zaki

+0

Для чего это стоит, ОП, эта задача называется символикой строки. – polygenelubricants

ответ

1

FYI, класс струн живет в java.lang package.

+0

Да, но есть другие классы манипуляции строками, которые живут в java.util, например StringTokenizer. – Powerlord

5
String text = "my name is xxx"; 
    String reversed = ""; 
    for (String word : text.split(" ")) { 
    reversed = word + " " + reversed; 
    } 
    reversed = reversed.trim(); 

Если совсем нет вызова метода допускается, то это немного хаотичным.

String text = "my name is xxx"; 
    char[] letters = text.toCharArray(); 
    char[] srettel = new char[letters.length]; 
    for (int last = letters.length, i = last - 1, j = 0; i >= -1; i--) { 
    if (i == -1 || letters[i] == ' ') { 
     for (int k = i + 1; k < last;) { 
      srettel[j++] = letters[k++]; 
     } 
     if (i != -1) srettel[j++] = ' '; 
     last = i; 
    } 
    } 
    String reversed = new String(srettel); 

Для этого требуется более подробное объяснение. Мы читаем входной массив справа налево (i--), и всякий раз, когда мы находим пробел или когда мы в конце концов попадаем в левую стену (i == -1), мы копируем (for k) слово, которое мы нашли в выходном массиве ([j++] =). Мы отслеживаем границы слов в last.

+0

Разделен() не API JAVA? – Mohanavel

+0

@Mohanavel: Технически все, кроме операторов, является Java API ... –

+2

+1 для srettel. –

0

Я не знаю Java, но вот худший подход.

Если вы не хотите использовать метод разделения(), а затем

string text = "My name is Khan"; 

    int length = text.Length; 

    int numberOfWords = 0; 

    for (int i = 0; i < text.Length; i++) 
    { 
     if (text[i] == ' ') 
     { 
      numberOfWords++; 
     } 
    } 

    numberOfWords += 1; // no of words will be always plus one than no of space. 

    string[] wordCollection = new string[numberOfWords]; 

    int wordLocation = 0; 

    for (int i = 0; i < text.Length; i++) 
    { 
     if (text[i] == ' ') 
     { 
      wordLocation++; 
     } 

     wordCollection[wordLocation] += text[i]; 
    } 

    string reversedString = string.Empty; 

    foreach (string str in wordCollection) 
    { 
     reversedString = str + " " + reversedString; 
    } 

    Console.Write(reversedString.Trim()); 

Если это домашнее задание, и его перевели в какой-то один, то вы проигравший

+0

Определенно не использовать Java-пакет ;-) –