[英]Java Homework trouble asterisks
我在編碼時遇到問題。 我正在嘗試制作一個程序,要求用戶輸入形狀的高度和寬度。 考慮到我正在學習 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);
}
}
我不知道他們用 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();
}
}
}
以下是您想要的,並且還涵蓋了他們輸入無效數字的情況, 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
以阻止它殺死程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.