class Starr {
public static void main(String[] args) {
int res;
for(int i=1;i<=5;i++) {
for(int j=1;j<=5;j++) {
res=i+j;
if(res>=6) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
输出:
*
**
***
****
*****
预期:
*
* *
* * *
* * * *
* * * * *
为了得到上述预期结果,我做了以下更改,
{
System.out.print(" *"); /* Added a space before '*' */
}
else
{
System.out.print(" "); /* Added 2 spaces */
}
我想知道这个预期结果是否可以在另一个我不必更改print语句的逻辑中实现。我做了什么改变是正确的方法?
答案 0 :(得分:0)
检查此代码,它有效!
int res;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
res=i+j;
String sp = (j!=1)?" ":"";
if(res>=6){
System.out.print(sp+"*");
}else{
System.out.print(sp+" ");
}
}
System.out.println();
}
答案 1 :(得分:0)
尽管您可以在不使用空格的情况下实现所需的输出,但无法在不打印任何内容的情况下实现在星星之间打印空白的方法。这可以使用System.out.format()或System.out.printf()来完成。 format和printf在实践中实际上是一样的。特别是对你:
System.out.printf("%2s", "*");
这意味着此输出应打印两个字符,其中第一个字符应为'*'。其余的将是空白。
答案 2 :(得分:0)
public class StarPattern {
public static void main(String[] args) {
// This loop print the number of * rows
for (int i = 5; i >= 1; i--) {
// This prints the empty space instead of *
for (int j = 1; j < i; j++) {
System.out.print(" ");
}
// Print the * in the desired position
for (int k = 5; k >= i; k--) {
System.out.print("*");
}
// Move the caret to the next line
System.out.println();
}
}
}