所以我刚创建了一个小程序,在要求用户输入Box的特定高度和宽度后打印出一盒星星,例如: 身高:4; width:5将打印出来 Starbox:
这是我的代码
import java.util.*;
public class Stars {
public static Scanner scan = new Scanner(System.in);
public static int height = scan.nextInt();
public static Scanner scan2 = new Scanner(System.in);
public static int width = scan.nextInt();
public static void main(String[] args) {
drawBox(height, width);
}
public static void drawBox(int height, int width) {
drawStars(width);
drawStarsWithSpaces(height, width);
drawStars(width);
}
public static void drawStars(int width) {
for (int i = 0; i < width; i++) {
System.out.print("*");
}
System.out.println();
}
public static void drawStarsWithSpaces(int height, int width) {
for (int x = 0; x < height - 2; x++) {
System.out.print("*");
for (int i = 0; i < width - 2; i++) {
System.out.print(" ");
}
System.out.print("*");
System.out.println();
}
}
}
我现在的第一个问题是,当我启动程序时,如何实现一个文本说“盒子的高度”和之后的“盒子的宽度”,这样用户就知道要输入什么。
接下来我听说,由于某些原因不使用全局变量,我应该只在main方法之后实现代码......但具有这些要求的程序代码是什么样的?
答案 0 :(得分:1)
首先,您不需要两个Scanner
。一个就够了。
其次,对您的代码的评论是正确的 - 如果不需要static
变量,那么使用main
变量被认为是不好的做法(这就是您所谓的'全局')。
这些值应该是public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int width = input.nextInt(), height.nextInt();
...
}
函数的内部函数(应该读取值并调用相应的函数,因此应该在其中声明和使用它们,而不是在它之外。)
它看起来像是:
main
至于仅在width
之后运行代码:您在减速时初始化height
和static
。当它们被声明为main
时,它们会在课程加载时初始化
在nextInt()
有机会参加之前!
这也被认为是不好的做法
还有一件事 - 这意味着你不能在static
发生之前运行任何代码(好吧,你可以使用打印所需的方法初始化另一个main
变量指令...)。
总结:
将您使用的所有变量设为System.out.println()
,然后在扫描下一个输入之前打印(使用main
)您想要的任何内容(因为扫描将在width=100%
本身进行。