#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 массива есть значение, поэтому я не понимаю, почему я получаю ошибку.