你好我正在尝试使用返回类型“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;
}
}
}
}
答案 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;
的情况下,您需要返回一些内容。如果height
或width
小于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;
}
使用一种简单的方法,根本就没有方法。