Java返回循环
问题描述:
我想创建一个程序,它会从给定的数字输入中找到最长的递增子字符串。Java返回循环
(如输入=“1215678”输出=“5678”)。
在循环底部的回报是不工作:它说,它无法找到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 k = in.nextLine();
}
public static String itsAscending(String n)
{
int length = k.length();
for(int i = 0; i < length; i++)
{
char first = k.charAt(i);
char next = k.charAt(i+1);
int f = (int)(first - 48);
int nx = (int)(next - 48);
String asc;
String works = "";
if (f<nx)
{
works = works + k.substring(i, i+2);
asc = works.substring(0, works.length()-1);
}
else
{
works = works + "";
asc = works.substring(i, works.length()-1);
}
}
return asc;
}
}
答
您的for
循环中声明asc
。将它移到外面。
答
您需要在任何循环或条件语句之外定义asc
。
public static String itsAscending(String n)
{
String asc = null;
// Rest of the method
}
答
您已经定义asc
里面的for循环和其只在循环里可见。如果你想在循环范围之外访问它,那么在外部定义它。
答
初始化变量asc
for循环。
public static String itsAscending(String n)
{
String asc = "";
声明变量k
或public static String itsAscending(String k)
如果调用方法形式main
方法
我将其移动到INT长度= k.length下更好( );然而我得到这个消息:变量增加可能没有被初始化 – user2181267 2013-03-18 08:00:59
定义它像:'String asc = null;' – Habib 2013-03-18 08:01:44
那么你应该初始化它为“”;) – Breavyn 2013-03-18 08:01:59