2010-09-09 7 views
0
public class Asterisk 
{ 
    public static void main(String[] args) 
    { 
     String output=""; 
     int count=1, input; 

     System.out.println("Input the size of the triangle from 1 to 50:"); 
     input = 5; 

     for(count=1;count <= input;count++) 
     { 
        output += "*"; 
      System.out.println(output); 
     } 

     input -= 1; 

     for(count =input;count <= input;count--) 
     { 
        output = output.substring(0,count); 
      System.out.println(output); 
     } 
    } 
} 

Mon code se complique correctement et s'exécute correctement. Cependant au bas de la sortie, il imprime une erreur en disant:substring() dans la boucle provoquant "StringIndexOutOfBoundsException: l'index de chaîne est hors de portée: -1"

Exception dans le thread "principal" java.lang.StringIndexOutOfBoundsException:

index de chaîne hors de portée: -1

at java.lang.String.substring(String.java:1937) 

    at Asterisk.main(Asterisk.java:18) 

Quelqu'un peut-il expliquer ce comportement étrange? Merci!

Répondre

5

Votre deuxième boucle for décompte à partir de "entrée" tant que la valeur est < = entrée. Cela inclut -1 (et peut plus de nombres négatifs). Vous voulez probablement "pour (compte = entrée; compte> 0; compte -)

+0

Merci beaucoup! Il suffit d'apprendre Java, donc excusez l'erreur débutant! :) –

0

for(count =input;count <= input;count--) 
parce que
input <= input
est toujours vrai ce 'for' se poursuivra sans fin, mais votre chaîne va bientôt" rester sans caractères "pour exprimer De cette façon, le for est forcé de s'arrêter contre nature avec cette exception

+0

Le gars a résoudre son problème ... Je suis celui qui a problème maintenant :) –

Questions connexes