Почему я получаю сообщение об ошибке для индекса 0 вне границ для длины 0 при попытке распечатать отдельные строки звездочек?

#java

#java

Вопрос:

Я ожидал, что он напечатает звезды. Результатом было то, что он напечатал звезды так, как я хотел, но при тестировании я получил сообщение об ошибке: «ArrayIndexOutOfBoundsException: индекс 0 вне границ для длины 0». Код:

 public class Printer {

    public static void main(String[] args) {
        // You can test the method here
        int[] array = {5, 1, 3, 4, 2};
        printArrayInStars(array);
   }

    public static void printArrayInStars(int[] array) {
        // Write some code in here
   
         int i = 1;
        while (i<=array[0]) {
            System.out.print("*");
            i  ;           
        }
        System.out.println("");
    
        int a = 1;
        while (a<=array[1]) {
            System.out.print("*");
            a  ;           
        }
        System.out.println("");
    
        int b = 1;
        while (b<=array[2]) {
            System.out.print("*");
            b  ;           
        }
        System.out.println("");
    
        int c = 1;
        while (c<=array[3]) {
            System.out.print("*");
            c  ;           
        }
        System.out.println("");

        int d = 1;
        while (d<=array[4]) {
            System.out.print("*");
            d  ;           
        }
        System.out.println("");
    }
}
  

Результаты:




**

Комментарии:

1. Возможно, вам захочется изменить порядок выполнения этого цикла.

2. С моей стороны ваш код работает нормально. Я получаю следующий вывод — ***** * *** **** **

3. Можете ли вы рассказать нам более подробно, как вы тестируете свой код?

4. @Numery Я использую компоненты tmc, и когда я нажимаю запустить проект, он выдает правильный вывод, но когда я нажимаю запустить тесты локально, я получаю эту ошибку.

5. Пожалуйста, предоставьте нам немного больше информации. Какой код есть в вашем тестовом файле? Вы можете проверить?

Ответ №1:

Вот простой способ зациклить массив и вывести array[i] количество * есть лучшие способы, но это, вероятно, самый простой.

 public static void main(String[] args) {
    // You can test the method here
    int[] array = {5, 1, 3, 4, 2};
    for(int i=0;i<array.length;i  )
    {
        printArrayInStars(array[i]);
    }
}

public static void printArrayInStars(int n) {
    // Write some code in here
    for(int i=0;i<n;i  )
    {
        System.out.print("*");
    }
    System.out.println("");
}
  

Выводит

 *****
*
***
****
**
  

Ответ №2:

Вы можете увидеть этот фрагмент

приятель, вот картинка, которую я опубликовал, поскольку вы не видите ошибки времени выполнения, вы можете изменить свой компилятор или скопировать и вставить в новый файл java и запустить его снова

Ответ №3:

 class star
{
    public void series()
    {
        String [] a = {"*","*","*","*"};
        for(int i=0; i<4; i  )
        {
            for(int j=0; j<4;j  )
            {   
                System.out.printf(a[j]);
            }System.out.printf("n");
        }
    }
    public static void main(String [] args)
    {
        star s = new star();
        s.series();
    }
}
  

на выходе будет
4 строки звездочек,
в каждой строке будет 4 звезды

если ожидаете чего-то другого, пожалуйста, проясните свой вопрос. n каким образом вы хотите печатать звезды.

Комментарии:

1. Это не отвечает на вопрос. Прекратите прямую публикацию решения. Вместо этого рассмотрите объяснение.

2. ну, приятель, я попытался запустить вашу программу, в ней нет ошибки.

3. Вопрос был Why am I getting an error for index 0 out of bounds for length 0 when trying to print separate rows of stars? . Ваш ответ вряд ли пытается объяснить, почему, и output will be 4 line of stars, each line will have 4 stars if expect something else, please clear your question. n what manner you wanna print stars на самом деле не помогает.

4. хорошо, приятель, если у тебя нет проблем с программой, и ты здесь, чтобы узнать, почему появляется ошибка out of bound . Тогда это очень просто, ваша программа не имеет ошибок, как вы можете видеть в новом ответе. При попытке получить или ввести значения в массиве, превышающие определенный размер, появляется сообщение Out of bound. Вы не пытались извлечь значение из массива, поэтому получить ошибку невозможно. Вы просто сравниваете значения массива со значениями другой переменной. И мне очень жаль, что я не получил ваш вопрос с первого раза. и на картинке вывод вашей программы без каких-либо изменений.

5. Когда я запускаю код, он работает, но когда я его тестирую, я получаю эту ошибку. В нем говорится, что индекс 0 выходит за рамки, но в индексе 0 массива есть значение, поэтому я не понимаю, почему я получаю ошибку.