基本上,用户输入学生成绩,程序将显示它们并将其分为几部分(0-29分,30-39分,40-69分和70-100分).如果用户输入的值大于100,则程序终止并输出结果.
我只是在垂直打印输出时遇到麻烦.
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Type in the students marks. Type above 100 to show output.");
int marks;
int starsfrom0to29 = 0;
int starsfrom30to39 = 0;
int starsfrom40to69 = 0;
int starsfrom70to100 = 0;
int counter = 0;
marks = input.nextInt();
while (marks < 100) {
//PUTTING MARKS INTO CATEGOERY
if ((marks >= 0) && (marks <= 29)) {
starsfrom0to29++;
}
if ((marks >= 30) && (marks <= 39)) {
starsfrom30to39++;
}
if ((marks >= 40) && (marks <= 69)) {
starsfrom40to69++;
}
if ((marks >= 70) && (marks <= 100)) {
starsfrom70to100++;
}
if (marks < 100) {
counter++;
}
marks = input.nextInt();
}
//PRINTING OUT NUMBER OF STARS
System.out.println();
System.out.print("0-29 ");
for (int x = 0; x < starsfrom0to29; x++) {
System.out.print("*");
}
System.out.println();
System.out.print("30-39 ");
for (int x = 0; x < starsfrom30to39; x++) {
System.out.print("*");
}
System.out.println();
System.out.print("40-69 ");
for (int x = 0; x < starsfrom40to69; x++) {
System.out.print("*");
}
System.out.println();
System.out.print("70-100 ");
for (int x = 0; x < starsfrom70to100; x++) {
System.out.print("*");
}
System.out.println();
System.out.println();
}
这将水平打印出来.例如:如果我输入数字:23,65,77,87,101,它将显示:
0-29 *
30-39
40-69 *
70-100 **
但是,我需要找出如何垂直打印输出.基本上,星号(星号)应位于垂直线上且在标题下方.
解决方法:
您需要的是一个循环,该循环将增加所有4个计数器,并在每次迭代的同一行中打印1-4个星号.
int i = 0;
int j = 0;
int k = 0;
int l = 0;
System.out.println("0-29 30-39 40-69 70-100");
while (i
if (i
System.out.print(" * ");
i++;
} else {
System.out.print(" ");
}
if (j
System.out.print(" * ");
j++;
} else {
System.out.print(" ");
}
if (k
System.out.print(" * ");
k++;
} else {
System.out.print(" ");
}
if (l
System.out.println(" * ");
l++;
} else {
System.out.println("");
}
}
标签:java
来源: https://codeday.me/bug/20191121/2048577.html