我试图返回?,?,?的值执行主函数时。但是,我只能得到?,作为答案。 我不想使用System.out.println(尽管它完成了这项工作),因为我想将值返回给另一个函数。第一个返回工作正如我所希望的那样,但在第二部分中,我不确定如何连接2返回和for循环,因为在我用return返回println后无用
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
r r = new r();
System.out.println(r.func(3));
}
public static String func(int size)
{
if(size == 1)
return "?";
else
{
for (int i = 1; i < size; i++)
{
return "?,";
}
return "?";
}
}
答案 0 :(得分:2)
我认为你在这里建立一个递归方法(你可能用一行ternary operation),如
return (size == 1) ? "?" : "?,"+func(size-1);
或您可以使用StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < size; i++)
{
if (i != 0) {
sb.append(", ");
}
sb.append("?");
}
return sb.toString();
答案 1 :(得分:0)
稍微修改了代码,你试图在for循环中使用return语句。您必须了解,一旦调用了return语句,指定的值就会自动从函数中取出。你不能使用它的多个版本。尝试下面的代码,看看是否有效。我做了一个字符串,并在每次需要时添加“?”。
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
r r = new r();
System.out.println(r.func(3));
}
public static String func(int size)
{
String value = "";
if(size == 1)
return "?";
else {
for (int i = 1; i < size; i++){
value += "?,";
}
value+= "?";
return value;
}
}
答案 2 :(得分:0)
尽量不要返回for循环..
public static String func(int size)
{String retval ="";
if(size == 1)
return "?";
else
{
for (int i = 1; i < size; i++)
{
retval= retval+"?,";
}
return retval+"?";
}
}
答案 3 :(得分:0)
return
关键字会立即停止在方法内执行代码,并将值传递到调用地点。
您必须从循环中删除return
并将其放置。接下来,您必须在某处保存当前结果 - 您的问号以逗号分隔。
让我们定义名为result
的{{1}}类型的新变量,并用空字符串初始化它:
String
其次,我们必须编写循环并迭代1到X之间的值(在此示例中:您的String result = "";
变量):
size
之后我们在for(int i = 1; i <= size; i++) {
result += "?,";
}
变量中有适当数量的问号。是时候使用result
关键字将值传递到您调用方法的位置:
return
现在main方法中的return result;
方法将获得我们返回的内容 - 带有问号的字符串。