返回语句在java中不起作用?

时间:2014-09-25 17:21:13

标签: java

你好我正在尝试使用返回类型“String”的方法打印一系列字符。下面提到的是逻辑。我得到的错误是:

 prog1.java:34: error: missing return statement
  }
  ^
 1 error

下面提到的是code.it应该打印字符..我可以使用“void”类型,但我无法使用返回类型“int”。任何建议都将受到高度赞赏。

import java.util.*;

class prog1 
{

    public static void main(String[] args) 
    {
        double height;
        double width;
        String fillcharac;
        Scanner sc = new Scanner(System.in);
        System.out.println("enter a value for height");
        height = sc.nextDouble();
        Scanner sc1 = new Scanner(System.in);
        System.out.println("enter a value for width:");
        width = sc.nextDouble();
        Scanner sc2 = new Scanner(System.in);
        System.out.println("enter the character value:");
        fillcharac = sc2.next();
        String x = print(height, width, fillcharac);
        System.out.println(x);
    }

    public static String print(double height, double width, String fill) 
    {
        for (double i = 1; i <= height; i++) 
        {
            for (double j = 1; j <= width; j++) 
            {
                return fill;
            }
        }

    }
}

4 个答案:

答案 0 :(得分:2)

您在print方法中缺少return语句。为了纠正它,只需返回一些字符串值为.g。

public  static  String print( double height,double width, String fill)
{
 for(double i =1;i<=height;i++){
 for(double j=1;j<=width;j++){

  return fill;
  }
 }
    return fill;
 }

答案 1 :(得分:2)

在永远不会执行return fill;的情况下,您需要返回一些内容。如果heightwidth小于1,就会发生这种情况。

在这种情况下,如果您要做的就是返回for,那么输入fill循环(甚至是2个循环)是没有意义的。如果您要执行其他操作,请在循环中添加该代码。无论哪种方式,您必须在方法的底部添加另一个return语句以满足编译器,因此它知道在所有情况下都会返回一些内容。

答案 2 :(得分:2)

看起来你的内部for循环应该“构建”一个循环完成后返回的字符串。

也许这个方法应该命名为build而不是print,因为打印工作稍后会进行?

类似的东西:

public static String build( double height, double width, String fill ) {
  String result;
  for( double i=1; i<=height; i++) {
    for(double j=1; j<=width; j++) {
      // Build your string here using i, j and fill
      // result = ...
      }
    }
  return result;
  }

然后你可以这样做:

//  Build the output string
x = build( height, width, fillcharac );

//  Print the output string
System.out.println( x );

答案 3 :(得分:0)

正如sol4me所说,你缺少print()方法中的return语句。 Java正在保护您免受可能完全错过return语句的执行。 e.g。

print(0, 5, fillcharac);

在这种情况下,外部循环永远不会执行,方法会立即退出,但Java不知道该方法应该返回什么。

作为旁注...如果你刚刚在第一次迭代时返回,为什么会有循环呢?也许是一个逻辑错误?高度和宽度参数对代码的执行没有影响(假设它们是> = 1)。整个打印方法可以改写为:

public static String print( String fill)
{
     return fill;
}

使用一种简单的方法,根本就没有方法。