2017-03-12 2 views
0

Ce code ne fonctionne pas. Pouvez-vous me dire ce qui ne va pas et pourquoi?En utilisant pour les boucles, comment inverser une chaîne?

package exer0403e08; 


public class EXER0403E08 { 
    public static void main(String[] args) { 
     String str= "hello"; 
     System.out.println(str); 
     char[]strchar = str.toCharArray(); 
     int first; 
     int last=5; 

     System.out.println("The reversed is: "); 
     for (first=1; first<=5; first++){ 
      strchar[first]=strchar[last]; 


      last--; 

     } 
     str=String.valueOf(strchar); 
     str=str.toUpperCase(); 
     System.out.println(str); 


    } 

} 

La réponse est "OLLO" et je veux faire "OLLEH".

+1

Il est java pas JavaScript – minigeek

+0

ce n'est pas une question jaascript – brk

+0

qu'est-ce que c'est au fait? –

Répondre

1

Votre boucle présente plusieurs problèmes. Et vous avez mal compris les index de tableau.

Vous itérez et modifiez le même tableau. Par conséquent, le comportement étrange et les index vont partir de zéro pour les tableaux.

Ainsi, le code fixe sera

public static void main(String[] args) { 
     String str = "hello"; 
     System.out.println(str); 
     char[] strchar = str.toCharArray(); 
     int first; 
     int last = 4; 

     System.out.println("The reversed is: "); 
     for (first = 0; first < 5; first++) { 
      strchar[first] = str.charAt(last); 

      last--; 

     } 
     str = String.valueOf(strchar); 
     str = str.toUpperCase(); 
     System.out.println(str); 

    } 

Mise à jour:

lien de démonstration http://ideone.com/GfgDZ3

+0

il n'y a pas d'amélioration. la réponse affichée est OLLLO –

+0

@ h.harry la sortie est correcte..voir les changements dans le code ci-dessus – minigeek

+0

Ajout d'un lien de démonstration. –

0

Vous avez de meilleures méthodes en java à chaîne inverse. S'il vous plaît vérifier this réponse:

Vous pouvez utiliser ceci:

new StringBuilder(hi).reverse().toString() 

Ou, pour les versions antérieures à JDK 1.5, utilisez java.util.StringBuffer au lieu de StringBuilder - ils ont la même API. Merci aux commentateurs de souligner que StringBuilder est préféré de nos jours.

+0

L'idée est d'en apprendre davantage sur les tableaux et les boucles, etc. –

+0

Je ne pensais pas que SO est un site tutoriel :-) Et, la question n'a pas dit qu'il veut juste apprendre les boucles :-) –

+0

ok mais notre professeur n'acceptera pas ça. il préfère utiliser pour les boucles seulement. –

1

vous pouvez écrire votre propre méthode comme ceci:

public static String reverse(String str) 
    { 
    String reversed = new String(); 

    for (int j = str.length()-1; j >= 0; j--) 
     reversed += str.charAt(j); 

    return reversed; 
    } 

puis essayer inverse ("Bonjour");

+0

c'est compliqué –

+0

@ h.harry bien pour vos commentaires sur d'autres answer..s.o. est q & un site mais strict, c'est pourquoi il a de la qualité. Google pour cela.Tout le meilleur pour le codage .. et cette année n'est pas compliquée juste l'index est inversé – minigeek

+0

@minigeek merci pour votre affaire. –