2013-03-18 159 views
0

我想創建一個程序,它會從給定的數字輸入中找到最長的遞增子字符串。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; 
    } 
} 

回答

1

您的for循環中聲明asc。將它移到外面。

0

您需要在任何循環或條件語句之外定義asc

public static String itsAscending(String n) 
{ 
    String asc = null; 
    // Rest of the method 
} 
1

您已經定義asc裏面的for循環和其只在循環裏可見。如果你想在循環範圍之外訪問它,那麼在外部定義它。

+0

我將其移動到INT長度= k.length下更好( );然而我得到這個消息:變量增加可能沒有被初始化 – user2181267 2013-03-18 08:00:59

+0

定義它像:'String asc = null;' – Habib 2013-03-18 08:01:44

+0

那麼你應該初始化它爲「」;) – Breavyn 2013-03-18 08:01:59

1

初始化變量asc for循環。

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

聲明變量kpublic static String itsAscending(String k)


如果調用方法形式main方法

​​