#java
Вопрос:
Я пытаюсь создать массив объектов формы, но когда я пытаюсь, я получаю исключение NumberFormatException: Для входной строки: «Цилиндр»
Форма[] shh = новая форма[(int) количество форм];
for(int i = 0; i <= shapes.length; i ) {
if (shapes[i].equals("Cylinder")) {
shh[i] = new Cylinder();
((Cylinder)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((Cylinder)shh[i]).setRadius(Double.parseDouble(shapes[i ]));
}
else if(shapes[i].equals("Cone")) {
shh[i] = new Cone();
((Cone)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((Cone)shh[i]).setRadius(Double.parseDouble(shapes[i ]));
}
else if (shapes[i].equals("OctagonalPrism")) {
shh[i] = new OctagonalPrism();
((OctagonalPrism)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((OctagonalPrism)shh[i]).setEdgeLength(Double.parseDouble(shapes[i ]));
}
else if(shapes[i].equals("PentagonalPrism")) {
shh[i] = new PentagonalPrism();
((PentagonalPrism)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((PentagonalPrism)shh[i]).setEdgeLength(Double.parseDouble(shapes[i ]));
}
else if(shapes[i].equals("Pyramid")) {
shh[i] = new Pyramid();
((Pyramid)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((Pyramid)shh[i]).setEdgeLength(Double.parseDouble(shapes[i ]));
}
else if(shapes[8].equals("SquarePrism")) {
shh[i] = new SquarePrism();
((SquarePrism)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((SquarePrism)shh[i]).setEdgeLength(Double.parseDouble(shapes[i ]));
}
else if(shapes[i].equals("TriangularPrism")) {
shh[i] = new TriangularPrism();
((TriangularPrism)shh[i]).setHeight(Double.parseDouble(shapes[i ]));
((TriangularPrism)shh[i]).setEdgeLength(Double.parseDouble(shapes[i ]));
}
}
Комментарии:
1. когда вы печатаете
shapes[i ]
, какой у вас номер? нравитсяDouble.parseDouble("1")
?2. Какой
shapes
объект должен содержать?3. что бы это могло быть? в attr или toString? значит, тебе нужно поступить
Double.parseDouble(shapes[i ].getAttrNumber())
правильно? эта доза работаетDouble.parseDouble("aaaa")
. это сработаетDouble.parseDouble("1")
4. Я ни в коем случае не печатаю фигуры[i ], если я распечатываю фигуры[i ] Я получаю строку цилиндра, массив, из которого я извлекаю, выглядит как «Цилиндр» «2567.09» «2345.99» «Конус» «2222.22» «2222.3». Его форма, за которой следуют его высота и радиус. В настоящее время я читаю в текстовом файле, содержащем эту информацию, и я сохранил их в строке [], и я пытаюсь сохранить каждую фигуру в форме [], двойнике. parseDouble преобразует 2 строки в двойные, чтобы я мог задать высоту и радиус фигур.
5. если
shapes
есть какие-то проблемы, например[0]="name" [1]=height [2]=radius
, проверьте, не произойдет лиDouble.parseDouble(shapes[0])
это в любое время. Я думаю, что в любое времяshapes[i ]
возвращается слово «Цилиндр», а затем выдает ошибкуDouble.parseDouble("Cylinder")
, извините, если я ошибаюсь