2015-05-06 28 views
8

Ecco il mio codice per stampare caratteri di stringa invertiti in Java senza utilizzare alcuna API. Ma non funziona correttamente. Qualcuno può aiutarmi a correggerlo?La parola stringa inversa in Java fornisce risultati errati?

Fornisce l'output "test amtest", mentre l'uscita deve essere "test am I".

Please help me per ottenere l'output esatto senza utilizzare metodi predefiniti o API.

+2

Si sta utilizzando un sacco di metodi e API predefiniti: 'length',' charAt', 'println'. State anche usando gli operatori predefiniti '-','> ',' --', '! =', '+'. Puoi chiarire perché quelli sono ammessi e altri no? E ancora più importante, quali vincoli hai che ti costringono a non essere in grado di utilizzare i metodi e le API predefiniti? –

risposta

14

Ci sono quattro problemi con l'implementazione:

  • non si va tutta la strada fino a zero,
  • Hai messo fine della riga dopo ogni stampa nel ciclo,
  • Fate non stampare il risultato "coda" dopo che il ciclo è finito e
  • Non si cancella result dopo averlo stampato nel ciclo.

La risoluzione di questi problemi consente di ottenere l'output corretto (demo).

+0

Grazie signore, funziona bene – khanam

4

provare

public static void main(String args[]) { 
    String input = "I am test"; 
    String result = ""; 
    int start=input.length()-1; 
    for (int i = input.length()-1; i >=0; i--) { 
     Character c = input.charAt(i); 
     if (c == ' ') { 
      for(int j=i+1;j<=start;j++) 
       result +=input.charAt(j); 
      result+=" "; 
      start=i-1; 
     } 
     else if (i==0) 
     { 
      for(int j=0;j<=start;j++) 
       result +=input.charAt(j); 
     } 
    } 
    System.out.println(result); 
}//It is giving output as test amtest 
//output should be : test am I 
+0

per favore osserva la soluzione fornita da dasblinkenlight, a – khanam

4
public static void main(String args[]) { 
    String input = "I am test"; 
    String result = ""; 

    String[] frags = input.split(" "); 
    for (int i = frags.length - 1; i >= 0; i--) { 
     System.out.print(frags[i] + " "); 
     } 
    System.out.println(); 
} 
+0

senza usare split. – khanam

+3

Devi essere un po 'più chiaro ... input.charAt (i) è un java api –

1

Si può provare la ricorsione, come pure -

public static void main(String args[]) { 
    String input = "I am test"; 
    List<String> listOfString = Arrays.asList(input.split(" ")); 

    System.out.println(reverseString(listOfString)); 

} 

private static String reverseString(List<String> input) { 
    int n = input.size(); 
    String result = ""; 
    if(input.isEmpty()){ 
     return result; 
    } 

    if(n>1){ 
    /*adding last element with space and changes the size of list as well 
     test + " " + [am, I] 
     test + " " + am + " " + [I]*/ 

     result = input.get(n-1) + " " + reverseString(input.subList(0, n-1)); 
    }else{ 
     result = input.get(n-1); 
    }    
    return result; 

} 

Speranza che aiuta.

-1
public static void main(String args[]){ 
    String input = "I am test"; 
    String result=""; 
    for(int i=input.length()-1;i>=0;i--){ 
     result=result+input.charAt(i); 
    } 
    System.out.println(result); 
} 
+0

Se si formatta il codice, sarà molto più leggibile e utile per l'OP – Anton