substring () в для цикла, вызывающего "StringIndexOutOfBoundsException: String index вне диапазона: -1" - PullRequest
0 голосов
/ 09 сентября 2010
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);
        }
    }
}

Мой код правильно компилируется и тоже работает правильно.Однако в нижней части вывода выводится сообщение об ошибке:

Исключение в потоке "main" java.lang.StringIndexOutOfBoundsException:

Строковый индекс вне диапазона: -1

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

    at Asterisk.main(Asterisk.java:18)

Кто-нибудь может объяснить это странное поведение?Спасибо!

Ответы [ 2 ]

5 голосов
/ 09 сентября 2010

Ваш второй цикл for ведет обратный отсчет от «входа», пока значение <= input. Это включает в себя -1 (и может больше отрицательных чисел). Вы, вероятно, хотите "для (count = input; count> 0; count -)

0 голосов
/ 09 сентября 2010

for(count =input;count <= input;count--)
, поскольку
input <= input
всегда верно, это 'for' будет продолжаться без конца, но ваша строка скоро "останется без символов", чтобы выразить этот путь, поэтому for вынужден останавливаться неестественно с этим исключением.
...