我正在尝试创建一个程序,它将从给定的数字输入中找到最长的升序子字符串。
(例如,输入=“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;
}
}
答案 0 :(得分:1)
您在asc
循环中声明for
。把它移到外面。
答案 1 :(得分:1)
您已在for循环中定义了asc
,并且仅在循环内部可见。如果要在循环范围之外访问它,请在外部定义它。
答案 2 :(得分:1)
将变量asc
初始化为for循环。
public static String itsAscending(String n)
{
String asc = "";
声明变量k
或public static String itsAscending(String k)
如果您调用方法形式main
方法
String k = in.nextLine();
itsAscending(k);
答案 3 :(得分:0)
您需要在任何循环或条件语句之外定义asc
。
public static String itsAscending(String n)
{
String asc = null;
// Rest of the method
}