Почему я получаю исключение NumberFormatException, когда пытаюсь добавить значения в массив фигур

#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") , извините, если я ошибаюсь