Как я могу исправить этот случай переключения в Java? - PullRequest
0 голосов
/ 11 ноября 2018

Так что я некоторое время работал над этим кодом, и он немного потерян. Имейте в виду, что я чрезвычайно новичок в Java, и поэтому я немного медленен в освоении. Я создал классы фигур, которые реализуют интерфейс с методами getArea, getPerimeter и getDescription. Есть несколько форм, но проблема не в этом. Проблема возникает, когда я пытаюсь реализовать варианты переключения, чтобы пользователь мог выбрать, какую форму он или она хочет добавить. Я получаю одно и то же сообщение столько раз, сколько Массив фигур позволит добавить адрес Формы, который я пытаюсь добавить. Я понимаю, что ошибка, которую я совершаю, скорее всего, новичок, я был бы очень признателен за помощь, спасибо. Также, если бы вы могли дать мне подсказку о том, как сортировать фигуры по их области, это было бы очень полезно.

public class ShapeApp2 {

/**
 * @param args the command line arguments
 */

public static void main(String[] args) {
     Shape[] test = new Shape[10];
     System.out.println("Choose a shape or type stop to break away?");
     Scanner sc = new Scanner(System.in);
     String Shape = sc.nextLine();

     for (int i=0; i<test.length; i++) {

     switch (Shape) {
         case "Rectangle":
             System.out.println("You have chosen a Rectangle");
             test[i] = new Rectangle();
             System.out.println("Enter another one now");
             break;
         case "Square":
             System.out.println("You have chosen a Square");
             test[i] = new Square();
             System.out.println("Enter another one now");
             break;         
         case "Equilateral Triangle":
             System.out.println("You have chosen an Equilateral Triangle");
             test[i] = new Equilateral_Triangle();
             System.out.println("Enter another one now");
             break;
         case "Right Triangle":
             System.out.println("You have chosen a Right Triangle");
             test[i] = new Right_Triangle();
             System.out.println("Enter another one now");
             break;
         case "Isosceles Triangle":
             System.out.println("You have chosen an Isosceles Triangle");
             test[i] = new Isosceles_Triangle();
             System.out.println("Enter another one now");
             break;
         case "Scalene Triangle":
             System.out.println("You have chosen a Scalene Triangle");
             test[i] = new Scalene_Triangle();
             System.out.println("Enter another one now");
             break;
         case "Stop":
             break;
      }
         System.out.println(test[i]);
     }

}

}

Также вот пара классов Shape для контекста.

package shapeapp2;

/**
 *
 * @author my-pc
 */
public class Rectangle implements Shape {
    private double length;
    private double width;
    private String shapeName;
    public Rectangle(){
        length = 4.0;
        width = 5.0;
        shapeName = "Rectangle";
    }
     public double getArea(){
         double Area;
         Area = length * width;
         return Area;
     }
     public double getPerimeter() {
         double Perimeter;
         Perimeter = (2*length) + (2*width);
         return Perimeter;
     }
     public String getDescription() {
         return shapeName;
     }
}



 package shapeapp2;

/**
 *
 * @author my-pc
 */
public class Square implements Shape {
    private double length;
    private double width;
    private String shapeName;
    public Square(){
        length = 8.0;
        width = 8.0;
        shapeName = "Square";
    }
     public double getArea(){
         double Area;
         Area = length * width;
         return Area;
     }
     public double getPerimeter() {
         double Perimeter;
         Perimeter = (2*length) + (2*width);
         return Perimeter;
     }
     public String getDescription() {
         return shapeName;
     }
}

1 Ответ

0 голосов
/ 11 ноября 2018

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

String Shape = sc.nextLine();
for (int i=0; i<test.length; i++) {

должно быть

for (int i=0; i<test.length; i++) {
    String Shape = sc.nextLine();

Кроме того, вы должны переименовать эту переменную. Shape выглядит как имя класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...