0

我正在尝试创建一个程序,该程序将从给定的数字输入中找到最长的升序子字符串。

(例如输入=“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;
    }
}
4

4 回答 4

1

ascfor循环中声明。把它移到外面。

于 2013-03-18T07:58:31.723 回答
1

您已asc在 for 循环内定义,并且仅在循环内可见。如果您想在循环范围之外访问它,请在外部定义它。

于 2013-03-18T07:58:32.660 回答
1

asc在 for 循环外初始化变量。

    public static String itsAscending(String n)
    {
    String asc = "";

声明变量kpublic static String itsAscending(String k)


如果你调用方法表单main方法更好

String k = in.nextLine();
itsAscending(k);
于 2013-03-18T08:10:03.317 回答
0

您需要asc在任何循环或条件语句之外定义。

public static String itsAscending(String n) 
{
    String asc = null;  
    // Rest of the method 
}
于 2013-03-18T07:58:32.583 回答