C和Java中的条件相同但输出不同

时间:2018-05-12 08:12:03

标签: java c

我正在使用C和java进行模式编程。我已经为两种具有相同条件的语言编写代码,所以我期待相同的输出,但我没有得到相同的输出。

这是模式程序的C代码

ArrayCache

输出:

#include<stdio.h>
int main()
{
  int i,j;
  for(i=1;i<=5;i++)
  {
    for(j=1;j<=9;j++)
    {
      if(j<=(6-i)||j>=(4+i))
      printf("*");
      else
      printf(" ");
    }
    printf("\n");
  }
}

Java代码:

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

输出:

public class Main {
  public static void main(String [] args) {
  int i,j;
  for(i=1;i<=5;i++)
  {
    for(j=1;j<=9;j++)
    {
      if(j<=(6-i)||j>=(4+i))
         System.out.print("*");
      else
       System.out.println();
  }
 }
}
}

帮我解决这个问题

2 个答案:

答案 0 :(得分:2)

Java版本打印新行而不是C版本中的空格。试试这个。

public class Main {
  public static void main(String [] args) {
    int i,j;
    for(i=1;i<=5;i++)
    {
      for(j=1;j<=9;j++)
      {
        if(j<=(6-i)||j>=(4+i))
          System.out.print("*");
        else
          System.out.print(" ");  // Prints space
      }
      System.out.println(); // Prints a newline for each row
    }
  }
}

答案 1 :(得分:1)

在您的Java程序中,您忘记在C代码中编写与printf(" ");对应的一行代码。这在Java中就像System.out.print(" ");

尝试修改后的代码:

public class Main {
    public static void main(String[] args) {
        int i, j;
        for (i = 1; i <= 5; i++) {
            for (j = 1; j <= 9; j++) {
                if (j <= (6 - i) || j >= (4 + i))
                    System.out.print("*");   // in C  printf("*");
                else
                    System.out.print(" ");   // in C  printf(" ");
            }
            System.out.println();            // in C  printf("\n");
        }
    }
}

输出:

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