2017-10-20 2 views
1

Reversed Je suis en train d'écrire un code qui tend à inverser une chaîne de la façon suivante:Main.java:9: erreur: lettres variables pourraient ne pas avoir été initialisé - chaîne

public class Main { 
    public static void main(String[] args) { 
    String str1; 
    str1 = "This text is waited to be reversed."; 
    char letters[]; 

    for(int i = str1.length() - 1; i >= 0; i--) { 
     System.out.print(letters[i]); 
    } 
} 
} 

Mais au moment de l'exécution, des spectacles de système

"Main.java:9: error: variable letters might not have been initialized 
     System.out.print(letters[i]); 
        ^
1 error" 

Je ne peux pas obtenir ce point. Quelqu'un peut-il l'expliquer pour moi? Merci beaucoup!

+2

Pas lors de l'exécution, lors de la compilation. Mais vous n'avez * certainement * pas attribué de valeur à 'letters': vous n'écrivez pas' letters = 'n'importe où dans ce code avant d'essayer de l'utiliser. –

+0

Vous voulez dire que lorsque je lance des lettres [], je devrais lui assigner une valeur, ou définir des limites pour ce type de tableau? Mais je veux définir un tableau qui stocke la valeur de la chaîne inversée. Donc, y a-t-il un moyen de le faire? –

Répondre

4

Écrire

char letters[]; 

ou plus communément

char[] letters; 

ne pas la variable initialiser, à savoir pas =

de votre utilisation je soupçonne que vous aviez l'intention

char[] letters = str1.toCharArray(); 

Cependant, le tableau lui-même n'est pas nécessaire. Vous pouvez simplement utiliser str1

String str1 = "This text is waited to be reversed."; 

for(int i = str1.length() - 1; i >= 0; i--) { 
    System.out.print(str1.charAt(i)); 
} 

un chemin plus court à écrire c'est

System.out.println(new StringBuilder(str1).reverse()); 

But at run-time

"Durée" a une signification précise; quand je cours le programme après qu'il a été compilé.

L'erreur "Compile time" est une erreur détectée par le compilateur, sans exécuter le programme.

Je suppose que vous vouliez dire; quand j'essaye d'exécuter le programme dans mon IDE.

+0

Merci beaucoup. Votre façon est beaucoup mieux et efficace. Mais, j'essaie d'apprendre Java et ne me laisse pas trop dépendre de l'API prebuild. Je veux inverser la corde de manière "basique, traditionnelle". Suivez ma méthode, pouvez-vous me donner quelques moyens de le faire? –

+0

@ viet.nguyenhoang01 Le premier exemple que j'ai donné est le plus simple. –