Je veux qu'il imprime chaque mot sur sa propre ligne.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 8 at java.lang.String.charAt(String.java:658) at MyProgram.main(MyProgram.java:34)
Cependant, je reçois cette erreur à chaque fois.
String movie = "10 Things I Hate About You"; String g = ""; for(int letter = 0; letter < movie.length(); letter++) { if(letter != ' ') { g += word.charAt(letter); } else { g += "\n"; } } System.out.println(g);
6 Réponses :
String movie = "10 Things I Hate About You"; StringBuilder g = new StringBuilder(); String g = ""; for(int letter = 0; letter < movie.length(); letter++) { if(word.charAt(letter) != ' ') { g.append(word.charAt(letter)); } else { g.append("\n"); } }System.out.println(g);
Vous pouvez diviser la chaîne en un tableau et imprimer chaque élément de ce tableau dans une nouvelle ligne.
String movie = "One word per line"; String[] arrOfStr = movie.split(" "); for(String s : arrOfStr){ System.out.println(s); }
Vous devriez vérifier movie.charAt(letter) != ' '
Et si c'est true
, vous devez ajouter movie.charAt(letter)
à g
.
10 Things I Hate About You
Production:
public class Main { public static void main(String[] args) { String movie = "10 Things I Hate About You"; movie = movie.replace(' ', '\n'); System.out.println(movie); } }
10 Things I Hate About You
Production:
public class Main { public static void main(String[] args) { String movie = "10 Things I Hate About You"; String g = ""; for (int letter = 0; letter < movie.length(); letter++) { if (movie.charAt(letter) != ' ') { g += movie.charAt(letter); } else { g += "\n"; } } System.out.println(g); } }
Vous pouvez utiliser une expression régulière pour fractionner le tableau. Pas besoin de boucles pour vérifier les caractères individuels. Cela utilise le séparateur de ligne correspondant au système d'exploitation que vous utilisez.
String movie = "10 Things I Hate About You"; movie = movie.replaceAll(" ", System.getProperty("line.separator")); System.out.println(movie);
Voici une seule ligne pour faire la même chose.
System.out.println(movie.replaceAll(" ", "\n"));
une ligne avec un lambda:
movie.codePoints().forEach( c -> System.out.print( c == ' ' ? '\n' : (char)c ) );
joining(…)
fonctionne en interne avec un java.util.StringJoiner
â € ¦un lambda qui suit l'approche originale char
par char
:
System.out.print( Stream.of( movie.split( " " ) ).collect( Collectors.joining( "\n" ) ) );
Quel est le
word
censé être? En outre, il devrait êtremovie.charAt(letter) != ' '
, Depuis laletter != ' '
Passe juste à chaque fois que laletter
n'est pas32
.Pourquoi n'utilisez-vous pas
string.split(" ")
?