如何用Java画一个半箭头 - 有代码实例

123 阅读1分钟

最受欢迎的Java编程语言练习之一是用星号画一个半箭头。

你需要要求用户输入箭头的底高、底宽和头宽。

例如,假设用户向你的Java程序输入以下数据:

int arrowBaseHeight = 4;
int arrowBaseWidth = 3;
int arrowHeadWidth = 5;

程序的输出应该如下:

*** // base width is 3
***
***
*** // 4 rows of arrow base height
***** // Head width starting at 5
****
***
**
*

本教程将帮助你学习如何解决上述问答。

首先,你需要使用一个循环,以便根据变量的值来打印星号*

创建一个名为DrawHalfArrow 的Java类,并在该类的main() 方法中定义以下变量:

class DrawHalfArrow {
public static void main(String[] args) {
int arrowBaseHeight = 4;
int arrowBaseWidth = 3;
int arrowHeadWidth = 5;
}
}

接下来,创建一个循环,打印出箭头基数。因为你知道你需要重复循环任务的次数,你可以使用for 循环。

下面是将打印半边箭的底座的代码:

for (int i = 0; i < arrowBaseHeight; i++) {
for (int j = 0; j < arrowBaseWidth; j++) {
System.out.print("*");
}
System.out.println();
}

第一个for 循环将打印箭头的基底高度。

对于每一行的arrowBaseHeight ,第二个for 循环将打印出与arrowBaseWidth 值相同次数的星号。

运行该程序将得到以下结果:

***
***
***
***

正如你所看到的,你可以得到箭基宽度的3 列和箭基高度的4 行。

接下来,你需要打印箭头的星号。

你可以通过使用相同的双for 循环模式来完成,就像对底座一样:

for (int k = arrowHeadWidth; k > 0; k--) {
for (int l = 0; l < k; l++){
System.out.print("*");
}
System.out.println();
}

首先,你需要一个for 循环来打印头部的行数,这将与arrowHeadWidth 相同。

之后,你需要第二个for 循环,以打印星号。对于每一行,星号将被递减一个,直到只有一个星号可以打印。

当你运行该程序时,你将得到完整的输出:

***
***
***
***
*****
****
***
**
*

现在你已经有了正确的输出,你需要使程序接受用户对箭头大小的输入。

要做到这一点,你需要使用JavaScanner 包,它给你一个接受用户输入的命令行工具。

看一下下面的代码:

import java.util.Scanner;

class DrawHalfArrow {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
 int arrowBaseHeight;
 int arrowBaseWidth;
 int arrowHeadWidth;

 System.out.println("Enter arrow base height: ");
 arrowBaseHeight = scanner.nextInt();

 System.out.println("Enter arrow base width: ");
 arrowBaseWidth = scanner.nextInt();

 System.out.println("Enter arrow head width: ");
 arrowHeadWidth = scanner.nextInt();
 }
}

你没有用任意的数字来初始化变量,而是让用户用scanner 对象来输入变量值。

nextInt() 方法被用来让scanner 知道你在期待一个Int 的值。如果该值不是Int ,那么Java将抛出一个错误并停止程序。

最后,你需要确保arrowHeadWidth 的值大于arrowBaseWidth 的值。

这是因为如果你输入的arrowHeadWidth 值小于或等于arrowBaseWidth 值,那么箭头头就会看起来不对:

*** // arrowBaseWidth = 3
***
***
*** // arrowBaseHeight = 4
** // arrowHeadWidth = 2
*

上面的输出看起来不像是一个箭头,对吗?

为了防止上面的输出,你需要添加一个while 循环,只要arrowHeadWidth 小于或等于arrowBaseWidth 的值,就会运行:

while (arrowHeadWidth <= arrowBaseWidth) {
System.out.println("Arrow head width must be greater than base width!");
System.out.println("Enter arrow head width: ");
arrowHeadWidth = scanner.nextInt();
}

下面是该程序的完整代码:

import java.util.Scanner;
class DrawHalfArrow {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int arrowBaseHeight;
int arrowBaseWidth;
int arrowHeadWidth;
System.out.println("Enter arrow base height: ");
arrowBaseHeight = scanner.nextInt();
System.out.println("Enter arrow base width: ");
arrowBaseWidth = scanner.nextInt();
System.out.println("Enter arrow head width: ");
arrowHeadWidth = scanner.nextInt();
while (arrowHeadWidth <= arrowBaseWidth) {
System.out.println("Arrow head width must be greater than base width!");
System.out.println("Enter arrow head width: ");
arrowHeadWidth = scanner.nextInt();
}
for (int i = 0; i < arrowBaseHeight; i++) {
for (int j = 0; j < arrowBaseWidth; j++) {
System.out.print("*");
}
System.out.println();
}
for (int k = arrowHeadWidth; k > 0; k--) {
for (int l = 0; l < k; l++){
System.out.print("*");
}
System.out.println();
}
}
}

当你运行该程序时,你会有如下的输出:

Enter arrow base height:
5
Enter arrow base width:
4
Enter arrow head width:
4
Arrow head width must be greater than the arrow base width!
Enter arrow head width:
5
****
****
****
****
****
*****
****
***
**
*

就这样,你已经解决了写一个画半边箭的程序的Java练习。干得好!

欢迎在你的项目中使用本教程中的代码。 😉