-5

我需要帮助编写一个 for 循环,该循环将根据用户输入的“sides”变量多次打印一条语句。我的 while 循环似乎也有问题,如果我的语法关闭,请告诉我。

import java.util.Scanner;
public class Lab6 {
public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int sides = 0;
        String poly = "ERROR!!!!!!";

        System.out.print("Enter a number from 3 to 12: ");
        sides = scan.nextInt();

        while (sides > 3 || < 12 ){
            System.out.println("Please enter a number from 3 to 12: ")
        }


        if(sides == 3) {
            poly = "Triangle";
        } else if(sides == 4) {
            poly = "Quadrilaterl";
        } else if(sides == 5) {
            poly = "Pentagon";
        } else if(sides == 6) {
            poly = "Hexagon";
        } else if(sides == 7) {
            poly = "Heptagon";
        } else if(sides == 8) {
            poly = "Octagon";
        } else if(sides == 9) {
            poly = "Nonagon";
        } else if(sides == 10) {
            poly = "Decagon";
        } else if(sides == 12) {
            poly = "Dodecagon";
        } 

            for (sides >= 3 || <= 12){
                System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);//TODO:Use a 'for loop' here!
        }


}
4

6 回答 6

0

既然您对答案进行了硬编码,为什么不直接使用带有正确答案的数组呢?

import java.util.Scanner;
public class Lab6 {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int sides = 0;
        String[] polygonNames = {"invalid", "invalid", "Triangle", "Quadrilaterl", "Pentagon", "Hexagon", "Heptagon", "Octagon", "Nonagon", "Decagon", "Elevengon", "Dodecagon"};

        System.out.print("Enter a number from 3 to 12: ");
        sides = scan.nextInt();

        while (sides < 3 || sides > 12 ){
            System.out.println("Please enter a number from 3 to 12: ")
            sides = scan.nextInt();
        }

        System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides,     polygonNames[sides-1]);
    }
}
于 2013-05-02T14:07:08.270 回答
0

首先你需要改变

while (sides > 3 || < 12 ){
        System.out.println("Please enter a number from 3 to 12: ")
    }

while (sides < 3 || sides > 12) {
        System.out.println("Please enter a number from 3 to 12: ");
        sides = scan.nextInt();
    }

然后改变这个

for (sides >= 3 || <= 12){
                System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);

for (int i = 0; i < sides; i++)
    System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);

这将打印语句,有边的次数。

输出:

Enter a number from 3 to 12: 1
Please enter a number from 3 to 12: 2
Please enter a number from 3 to 12: 3
A polygon with 3 sides is called a(n) Triangle.
A polygon with 3 sides is called a(n) Triangle.
A polygon with 3 sides is called a(n) Triangle.

不过,这看起来像是家庭作业...您不想在这里被抓到寻求答案...

于 2013-05-02T14:07:18.510 回答
0

你的代码有很多问题。鉴于它的质量,我认为这是家庭作业。

while (sides > 3 || < 12 ){
    System.out.println("Please enter a number from 3 to 12: ")
}

即使您更正了条件,这也会导致无限循环,因为一旦进入循环,条件的值就不会改变。

for (sides >= 3 || <= 12){
    System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);//TODO:Use a 'for loop' here!
}

请先阅读 for-loop 语法。然后您可以发布具体问题。但这看起来像你写了一个if-statement 并且更正器告诉你使用for-loop 代替。老实说,这不是他的意思。请尝试花时间了解您的程序应该如何工作。

于 2013-05-02T14:03:41.223 回答
0
while (sides > 3 || < 12 )

应该

while (sides < 3 || sides > 12 ){
    System.out.println("Please enter a number from 3 to 12: ");
    sides = scan.nextInt();
}

而这块

for (sides >= 3 || <= 12){
            System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);//TODO:Use a 'for loop' here!
    }

应该:

System.out.printf("\nA polygon with"+ sides + "sides is called" + poly);

无需使用 for 循环来打印上述语句。

于 2013-05-02T13:56:00.560 回答
0

用这个

 Scanner scan = new Scanner(System.in);
        int sides = 0;
        String poly = "ERROR!!!!!!";

        System.out.print("Enter a number from 3 to 12: ");
        sides = scan.nextInt();

        while (sides < 3 || sides > 12 ){
            System.out.println("Please enter a number from 3 to 12: ");
            sides = scan.nextInt();
        }


        if(sides == 3) {
            poly = "Triangle";
        } else if(sides == 4) {
            poly = "Quadrilaterl";
        } else if(sides == 5) {
            poly = "Pentagon";
        } else if(sides == 6) {
            poly = "Hexagon";
        } else if(sides == 7) {
            poly = "Heptagon";
        } else if(sides == 8) {
            poly = "Octagon";
        } else if(sides == 9) {
            poly = "Nonagon";
        } else if(sides == 10) {
            poly = "Decagon";
        } else if(sides == 12) {
            poly = "Dodecagon";
        } 

        if (sides >= 3 || sides <= 12){
                System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);//TODO:Use a 'for loop' here!
        }

}

输出

 Enter a number from 3 to 12: 0
 Please enter a number from 3 to 12: 1
 Please enter a number from 3 to 12: 5

 A polygon with 5 sides is called a(n) Pentagon.
于 2013-05-02T13:59:39.780 回答
0

使用 switch 而不是多个条件。在 while 循环中,您还需要读取新输入:

import java.util.Scanner;
public class Lab6 {
public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
int sides = 0;
String poly = "ERROR!!!!!!";

System.out.print("Enter a number from 3 to 12: ");
sides = scan.nextInt();

while (sides < 3 || sides > 12 ){
    System.out.println("Please enter a number from 3 to 12: ")
    sides = scan.nextInt();
}

switch (sides){
    case 3:
        poly = "Triangle";
        break;
    case 4:
        poly = "Quadrilaterl";
        break;
    case 5:
        poly = "Pentagon";
        break;
    case 6:
        poly = "Hexagon";
        break;
    case 7:
        poly = "Heptagon";
        break;
    case 8:
        poly = "Octagon";
        break;
    case 9:
        poly = "Nonagon";
        break;
    case 10:
        poly = "Decagon";
        break;
    case 11:
        poly = "Elevengon";
        break;
    case 12:
        poly = "Dodecagon";
        break;
    }

    System.out.printf("\nA polygon with %d sides is called a(n) %s.", sides, poly);
}
于 2013-05-02T14:02:32.757 回答