expected output: **** my output: ****
*** ***
** **
* *
** *
*** *
**** ****
我的代码:
class assign17
{
public static void main(String[] args)
{
int n=7;
for(int i=0;i<7;i++)
{
for(int j=0;j<4;j++)
{
if(i+j<=n-4||j==0||i==n-1)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
}
怎么样这样? 如何选择内部? 我必须使用另一个for循环,否则我可以自己进入。
答案 0 :(得分:2)
这将为您提供预期的输出
public static void main(String[] args)
{
for (int row=1;row<=7;row+=2){
for (int space=7;space>=row;space-=2){
System.out.print("*");
}
for (int i=1;i<=row;i++){
System.out.print(" ");
}
System.out.print("\n");
}
for (int row=5;row >=1; row-=2){
for (int space=7;space>=row;space-=2){
System.out.print("*");
}
for (int i=1;i<=row;i++){
System.out.print(" ");
}
System.out.print("\n");
}
}
我为你做了四个,看起来像是作业,所以我猜你更有可能这样理解。
说明:
两个第一个循环将打印星星,直到这个
****
***
**
*
其他两个循环将打印星星的最后一部分
**
***
****
答案 1 :(得分:2)
试试这个,我在你的代码中添加了else if条件
public static void main(String[] args) {
int n = 7;
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 4; j++) {
if (i + j <= n - 4 || j == 0 || i == n - 1)
System.out.print("*");
else if (i - j >= n - 4)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
答案 2 :(得分:1)
如果你愿意,如果我是正确的话,你可以用它来递归
static void printstars(int num){
if(num > 0){
for(int t = 0; t<num;t++)
System.out.print("*");
System.out.println();
printstars(num -1);
for(int t = 0; t<num;t++)
System.out.print("*");
System.out.println();
}
}
答案 3 :(得分:1)
每次迭代应打印的星数
iteration(i) => 0 | 1 | 2 | 3 | 4 | 5 | 6
number of star => 4 | 3 | 2 | 1 | 2 | 3 | 4
Math.abs(mid-i)+1 => 4 | 3 | 2 | 1 | 2 | 3 | 4
所以我在这里使用了内循环限制Math.abs(mid-i)+1
public static void main(String[] args)
{
int n = 7;
int mid = n / 2;
for(int i=0; i<n; i++)
{
for(int j=0; j< Math.abs(mid-i)+1; j++)
{
System.out.print("*");
}
System.out.println();
}
}
输出:
****
***
**
*
**
***
****
答案 4 :(得分:0)
它可能不是最好的解决方案,但它有效;)我只是从4星开始,每行减少1。如果只剩下一颗星,我会再次开始增加星星。
public static void main(String[] args) {
int stars = 4;
boolean lower = true;
for(int i=0;i<7;i++)
{
for(int j=0;j<stars;j++) {
System.out.print("*");
}
if(lower) {
stars--;
if(stars==0){
stars=2;
lower = false;
}
}
else {
stars++;
}
System.out.println();
}
}
答案 5 :(得分:-1)
public class numPtr {
public static void main( String arg[]){
int ck=0,c=2;
while(c>0){
if(ck==0){
for(int i=1,r=5;i<=5;i++,r--){
for(int j=1;j<=r;j++){
System.out.print(j);
}
System.out.println(); }
ck++;
} else{
for(int i=2;i<=5;i++){
for(int j=1;j<=i;j++){
System.out.print(j); }
System.out.println();
}
}
c--;
}
}
}
它会提供类似你的模式的输出..
12345
1234
123
12
1
12
123
1234
12345
答案 6 :(得分:-1)
你可以这样做。提取出使用的字符,如果您将来需要更改它。另外,请注意System.out.println
仅在第一个for循环中,因此它并不复杂。有一种方法负责构建您需要打印的字符串。星数有两个计数器,当你变为零时,你切换y
变量并开始计数。
public static final String CHARACTER = "*";
public static void main(String args[]) {
int x = 4;
int y = 1;
boolean hitZero = false;
for (int i = 0; i < 7; i++) {
System.out.println(buildStr(hitZero?y:x));
if(x==1)
hitZero = true;
if(hitZero)
y++;
else
x--;
}
}
private static String buildStr(int count) {
String res = "";
for(int i=0; i< count; i++)
res+=CHARACTER;
return res;
}
<强>输出强>
****
***
**
*
**
***
****