Java Return Loop

时间:2013-03-18 07:57:24

标签: 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;
    }
}

4 个答案:

答案 0 :(得分:1)

您在asc循环中声明for。把它移到外面。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

将变量asc初始化为for循环。

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

声明变量kpublic 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 
}