返回不兼容的类型(java)

时间:2014-02-28 21:27:38

标签: java return

原件: 好的,所以我必须制作一个简单的数字金字塔,但问题是它必须使用两种方法。我的问题是,返回一直给我“不兼容的类型”,我不知道为什么。 好的,所以我必须制作一个简单的数字金字塔,但问题是它必须使用两种方法。我的问题是,返回一直给我“不兼容的类型”,我不知道为什么。

public static void main(String[] args) 
{
System.out.println(NumPyramid(1,1));
} 
public static int NumPyramid(int i, int j)
 {
    for (;i <= 7; i++) 
{
  for (; j <= i; j++)
{        
{    
   return System.out.print(j + " ");
    }
} 
}

编辑:好的,现在我的新代码存在不是金字塔的问题

public static void main(String[] args) 
{
    NumPyramid(1,1);
} 
public static void NumPyramid(int i, int j)
{
    for (;i <= 7; i++) 
    {
      for (; j <= i; j++)
      {      
          System.out.print(j + " ");
        }
      System.out.println();
    } 
}

打印出来

1 2 3 4 5 6 7

删除Println会产生1 2 3 4 5 6 7

输出应该是 1 12 123

4 个答案:

答案 0 :(得分:4)

System.out.print是一种void方法;也就是说,它什么都不返回。

您无法从void方法返回任何内容。

只需从该行中删除return关键字,将方法的签名从int更改为void

然后,更改main方法中的调用以从中删除System.out.println

答案 1 :(得分:2)

好吧,正如@makoto巧妙地指出,System.out.print是一个void方法,它没有返回任何内容:

public static void main(String[] args) {
    System.out.println(NumPyramid(1,1));
} 

也应该改变。所以你应该做:

public static void NumPyramid(int i, int j) {
  for (;i <= 7; i++) {
    for (; j <= i; j++) {       
       System.out.print(j + " ");
    }
  } 
}

虚空方法,并且:

public static void main(String[] args) {
    NumPyramid(1,1);
} 

没有打印。

修改

当你遇到一个新问题时,你不应该编辑你的问题,删除问题帖子中的内容以使其成为一个新问题......而是接受最佳答案,然后创建 new 帖子。在这里,我们不仅仅回答,但我们正在构建一个知识库。如果您有新问题,请将其设为新帖子!

那就是说,对于你的新问题,你的算法是关闭的,它应该是:

public static void NumPyramid(int max) {
    for (int i=1; i<=max; ++i) {
        for (int j=1; j<=i; ++j)
            System.out.println(j + " "); 
        System.out.println();
    }
}
  • 只有一个参数max来指定行数和金字塔“基数”的宽度;
  • 使用i迭代max回车输出;
  • 使用ji个数字
  • 进行迭代
  • 从1开始迭代,因此我们不会为0 1 2输出max = 3,而是1 2 3

应该输出,max = 3

1
1 2
1 2 3
再次,HTH。请,请恢复原来的问题。

答案 2 :(得分:0)

你想要打印吗?

1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 

你需要一个参数,它是方法:

public static void NumPyramid(int number)
{
    for (int i = 1; i <= number; ++i)
    {
        for (int x = 1; x <= i; ++x)
        {
            System.out.print(x + " ");
        }

        System.out.println();
    }
}

我认为这是不言自明的

答案 3 :(得分:0)

我猜你不再询问不兼容的退货类型了吗?好吧,我想,我现在可以回答你现在的问题。

如果您希望代码位于金字塔中,则无法执行此操作:

for (;i <= 7; i++) 
{
  for (; j <= i; j++)
  {      
      System.out.print(j + " ");
    }
  System.out.println();
} 

该代码正在做的是打印j的值,然后打印一个空格,然后打印一个新行。解决方案是创建一个String,用于在for循环的每次迭代后存储数字。

for (;i <= 7; i++) 
{
  for (; j <= i; j++)
  {      
      //System.out.print(j + " ");
      //The string would take the place of this line
    }
  //Since println always prints on a new line, you 
  //could just print the string in this System.out
  System.out.println();
}