2016-02-24 1 views
0

это простая программа для обратного каждое слово строки и печати ... я не знаю, что происходит не так с этим ... пожалуйста, помогитереверс каждое слово sentence..the изменения не появляются

import java.util.Scanner; 


public class ReverseWordCapitalizeFirstCharacter { 


    public static void reverse(char a[], int start, int end) 
    { 
     while(start<end) 
     { 
     char temp = a[start]; 
     a[start] = a[end]; 
     a[end] = temp; 
     start++; 
     end--; 
     } 
    } 

    public static void main(String[] args) { 

     System.out.println("Enter the string"); 
     Scanner sc = new Scanner(System.in); 
     String str = sc.next(); 

     char a[] = new char[str.length()]; 
     a = str.toCharArray(); 
     int wordStartIndex = 0; 

     for(int i=0; i<a.length; i++) 
     { 
       if(a[i] == ' ') 
       { 
        reverse(a,wordStartIndex,i-1); 
        wordStartIndex = i+1; 
       } 

     } 

     for(int i=0; i<a.length; i++) 
     { 
      System.out.print(a[i]); 
     } 

    } 

} 

я передаю массив символов в качестве параметра функции, обратной каждое слово ..

+2

ли вы пытаетесь использовать отладчик? Я предполагаю, что вы никогда не называете 'reverse()' –

+1

Просто дикая догадка, ставка вы знаете, как программировать на C или C++. Я прав? ;) – Neil

+1

новый StringBuilder (hi) .reverse(). ToString() – lordkain

ответ

1

не потому sc.next() возвращает только следующее слово? Итак, вы никогда не сталкиваетесь с символом '' в своей строке, поэтому вы никогда не вызываете обратный метод. Попробуйте использовать sc.nextLine(); может быть.

+1

Получил это! !! спасибо человеку @kevyn u rock –

+0

Добро пожаловать! –

1

Javadoc говорит:

Сканер разбивает свой вклад в лексемы с использованием шаблона разделителя, который по умолчанию соответствует пустому пространству.

В результате, если вы вводите "abc 123 456", sc.next() вернется только "abc".

String str = sc.next();//str only contains "abc" 

[...] 

if(a[i] == ' ') //This condition is never met. 

Вы можете указать разделитель, как это:

Scanner sc = new Scanner(System.in); 
sc.useDelimiter("\n"); 
Смежные вопросы