升序substring编译错误
问题描述:
我想创建一个程序,从任何给定的数字输入中读取最长的升序子字符串。升序substring编译错误
(如输入=“43123”输出=“123”)
我已经完成编辑循环,而且程序不编译,并保持一提的倒数第二个右括号“失踪return语句” 。
我曾尝试添加返回asc;并打破;但似乎都没有工作。
以下是我的代码:
import java.util.Scanner;
public class Ascending{
public static void main(String args[]){
System.out.print("Enter a number = ");
//scan the input
Scanner in = new Scanner(System.in);
String n = in.nextLine();
//print solution
System.out.println("output = " + itsAscending(n));
}
public static String itsAscending(String n) {
int length = n.length();
for(int i = 0; i < length; i++) {
char first = n.charAt(i);
char next = n.charAt(i+1);
int f = (int)(first - 48);
int nx = (int)(next - 48);
String asc;
String works = "";
if (f<nx) {
works = works + n.substring(i, i+2);
asc = works.substring(0, works.length()-1);
return asc;
}
else {
works = works + "";
asc = works.substring(i, works.length()-1);
return asc;
}
}
}
}
答
@Ali Alamiri是正确的,在情况下,n的长度为0,所以你不会有一个返回值,你将永远不会进入for循环。 @Ali Alamiri应该收到回答的积分
+0
现在我希望我把评论作为答案:P – 2013-03-17 23:38:15
答
只要将我的评论作为答案,以防某人面临类似问题。
您需要在for循环之外返回。因此,不要在else语句中返回asc,而是将其返回到循环外部
您提到了“编译错误”,但没有显示它。请显示您的错误文本,并通过注释说明哪一行代码会导致错误。另外,请通过使缩进一致来修复代码的格式。适当的代码格式通常会帮助你(和我们)调试你的程序。不正确的格式使你的代码几乎不可能读取和解释。 – 2013-03-17 22:00:37
也许它抱怨''for'循环之后没有返回(并且它不能证明其中的一个会遇到)。 – 2013-03-17 22:03:27
好的。如果长度为0,则循环根本不运行,因此需要结束返回。 – SJuan76 2013-03-17 22:05:39