我遇到编码问题。我试图制作一个程序,要求用户输入形状的高度和宽度。考虑到我正在参加java课程,我是一个新手。需要有两个平行的星号形状,可以是正方形或矩形。
谢谢!
我到目前为止的代码在
中有点坦率import java.util.Scanner;
public class rectangle {
public static void main(String... args) {
int recHeight = 0;
int recWidth = 0;
Scanner input = new Scanner(System.in);
do {
System.out.print("Enter height [-1 to quit] >> ");
recHeight = input.nextInt();
if (recHeight == -1) {
System.exit(0);
}
/* check if number is valid */
if (recHeight < 2 || recHeight > 24) {
System.err.println("--Error: please enter a valid number");
continue; // prompt again
System.out.print("Enter width [-1 to quit] >> ");
recWidth = input.nextInt();
if (recWidth == -1) {
System.exit(0);
}
/* check if number is valid */
if (recWidth < 2 || recWidth > 24) {
System.err.println("--Error: please enter a valid number");
continue; // prompt again
}
for (int col = 0; col < recHeight; col++) {
for (int row = 0; row < recWidth; row++) {
/* First or last row ? */
if (row == 0 || row == recWidth - 1) {
System.out.print("*");
if (row == recWidth - 1) {
System.out.println(); // border reached start a new line
}
} else { /* Last or first column ? */
if (col == recHeight - 1 || col == 0) {
System.out.print("*");
if (row == recWidth - 1) {
System.out.println();
}
} else {
System.out.print(" ");
if (row == recWidth - 1) {
System.out.println();
}
}
}
}
}
}
} while (true);
}
}
答案 0 :(得分:1)
我不知道他们用if和continue来教你什么。我认为你用do while(true)创建了一个无限循环,因为你从未将它设置为false。 以下是我们上周的教学方法,或至少根据您的需要进行修改。
import java.io.*;
import java.util.Scanner;
public class SquareDisplay
{
public static void main(String[] args) throws IOException
{
// scanner creation
Scanner stdin = new Scanner(System.in);
// get width
System.out.print("Enter an integer in the range of 1-24: ");
int side = stdin.nextInt();
// check for < 1 or greather then 24
while( (side < 1) || (side > 24))
{
System.out.print("Enter an integer in the range of 1-24: ");
// reget the side
side = stdin.nextInt();
}
// get height
System.out.print("Enter an integer in the range of 1-24: ");
int height = stdin.nextInt();
// check for < 1 or greather then 24
while( (height < 1) || (height > 24))
{
System.out.print("Enter an integer in the range of 1-24: ");
// reget the height
height = stdin.nextInt();
}
// create rows
for( int rows = 0; rows < side; rows++)
{
// creat cols
for( int cols = 0; cols < height; cols++)
{
System.out.print("X");
}
System.out.println();
}
}
}
答案 1 :(得分:0)
以下是您想要的,也包括他们输入无效数字的情况,例如example
import java.util.InputMismatchException;
import java.util.Scanner;
public class SquareDisplay {
public static void main(final String... args) {
try (Scanner input = new Scanner(System.in)) {
final int columns = getInRange(input, 1, 24);
final int rows = getInRange(input, 1, 24);
for (int x = 0; x < columns; x++) {
for (int y = 0; y < rows; y++) {
System.out.print("X");
}
System.out.println();
}
}
}
private static int getInRange(final Scanner input, final int min, final int max) {
int returnValue = Integer.MIN_VALUE;
do {
System.out.printf("Please enter a value between %d and %d: ", min, max);
try {
returnValue = input.nextInt();
} catch (final InputMismatchException ignored) {
// Ignore, keep asking
}
input.nextLine();
} while (returnValue < min || returnValue > max);
return returnValue;
}
}
try-with-resources
处理资源管理InputMismatchException
以阻止程序杀死程序