/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package revstring;
/**
*
* @author Pawan
*/
public class RevString {
private String substr="";
private String temp="";
private static int strLength=0;
private String reversed="";
public String revString(String str)
{
Character ch;
strLength=str.length();
System.out.println("length- "+strLength);
if(strLength!=0)
{
ch=str.charAt(strLength-1);
temp=temp+ch;
substr=str.substring(0,strLength-1);
if(substr.equals("")){reversed=temp; return reversed;}
return temp+revString(substr);
}
return reversed;
}
public static void main(String[] args) {
RevString rev=new RevString();
System.out.println("reversed string- "+rev.revString("PAWAN"));
}
}
1
A
回答
2
嘗試StringBuffer#reverse內置反向的方法。
String str= "reverse";
StringBuffer sb= new StringBuffer(str);
//reverse
String result= sb.reverse().toString();
System.out.println(result);
在另一邊,在你的代碼的問題是,你已經是你的類成員應該是方法變量,這意味着你必須太多州。這個問題恰恰是temp
變量。爲了解決這個問題,這個行添加到您的方法的開頭:
public String revString(String str)
{
temp = ""; //this line
Character ch;
未來的暗示
不要把變量的類成員(場),如果你不打算使用他們在其他方法/由其他類閱讀。類成員僅用於狀態。本地化方法中的所有變量。
public static class RevString {
public String revString(String str)
{
int strLength=str.length();
System.out.println("length- "+strLength);
String reversed=str;
if(strLength!=0)
{
Character ch=str.charAt(strLength-1);
String temp=""+ch;
String substr=str.substring(0,strLength-1);
if(substr.equals("")){reversed=temp; return reversed;}
return temp+revString(substr);
}
return reversed;
}
2
你的問題是,你用你的變量作爲類變量,即SUBSTR,溫度,strLength,逆轉應該是內部revString()。 然後它的工作。
固定:
public class RevString {
public String revString(String str) {
String substr="";
String temp="";
int strLength=0;
String reversed="";
Character ch;
strLength=str.length();
System.out.println("length- "+strLength);
if(strLength!=0)
{
ch=str.charAt(strLength-1);
temp=temp+ch;
substr=str.substring(0,strLength-1);
if(substr.equals("")){reversed=temp; return reversed;}
return temp+revString(substr);
}
return reversed;
}
public static void main(String[] args) {
RevString rev=new RevString();
System.out.println("reversed string- "+rev.revString("PAWAN"));
}
}
0
臨時變量已經包含了完全相反的字符串。如果更換
return temp+revString(substr);
與
return temp;
您的代碼工作正常。
@sotix當然是對的:你不應該使用這樣的成員變量。
1
如果你想遞歸,那麼你可以簡化你的方法一點:
public String reverseString(String r){
if (r.length()<2){
return r;
}
else {
return r.charAt(r.length()-1)+ reverseString(r.substring(0,r.length()-1));
}
}
如果要使用當前的方法,然後繼續下面的變量(你已經聲明爲實例變量)在方法本地範圍。
Character ch;
String substr="";
String temp="";
int strLength=0;
String reversed="";
0
您不應該對局部變量使用類屬性。
如果你運行你的代碼,你將獲得:
N +
NA +
NAW +
NAWA +
NAWAP
=
NNANAWNAWANAWAP
由於溫度是每個呼叫共享。 把你的substr,temp,strLength的聲明放在revString()的開頭。
0
public class RevString {
private String substr="";
private String temp="";
private static int strLength=0;
private String reversed="";
public String revString(String str)
{
Character ch;
strLength=str.length();
System.out.println("length- "+strLength);
if(strLength!=0)
{
ch=str.charAt(strLength-1);
if(temp.length()==str.length())
return temp;
temp=temp+ch;
substr=str.substring(0,strLength-1);
if(substr.equals("")){reversed=temp; return reversed;}
temp=temp+revString(substr);
}
return reversed;
}
public static void main(String[] args) {
RevString rev=new RevString();
System.out.println("reversed string- "+rev.revString("PAWAN"));
}
}
相關問題
- 1. 反向字符串作爲輸入不返回反向字符串
- 2. 錯誤,其中「__str__返回非字符串」,但顯示輸出
- 3. 我得到的字符串錯誤
- 4. 當我輸出字符串時,我得到隨機數字
- 5. 儘管我的字符串比它給出的值長,但我得到了StringIndexOutOfBoundsException
- 6. 我得到一個錯誤「的方法秀(FragmentManager,字符串)」
- 7. 獲取正確的字符串輸出,但是我也得到了不需要的空輸出
- 8. 反向字符串(Leetcode)使用C++,爲什麼我不能返回新字符串作爲方法
- 9. 格式化返回字符串在地圖作爲一個字符串,但得到的錯誤
- 10. 錯誤:「字符串的格式不正確」,當我得到時間戳數據...
- 11. 返回字符串的方法錯誤的字符
- 12. 我得到錯誤「所需的對象」:[字符串:「主機名」]」
- 13. PHP:字符串得到了一個子字符串,顯示字符串
- 14. 當我嘗試打印出方法返回的字符串時,爲什麼我的python方法會輸出'None'?
- 15. Todoist API - 從字符串到字符串的反轉輸出
- 16. 爲什麼我得到不正確的字符串長度值?
- 17. 反向字符串錯誤?
- 18. 反向字符串錯誤
- 19. 字符串反向錯誤
- 20. 爲什麼我得到相同的字符串輸出?
- 21. 我收到錯誤的字符串值
- 22. Java:IndexOf(字符串字符串),返回錯誤的字符
- 23. Ruby得到()沒有返回正確的字符串
- 24. 爲什麼我的字符串有當輸出到HTML
- 25. 當我得到一個字符串時返回一個對象
- 26. 我得到了一個數字2當我扭轉我的字符串
- 27. 重載輸出操作符給出了相反的字符串
- 28. 爲什麼StringObject的方法字符()返回字符串的字符[]作爲U2 *
- 29. 爲什麼Emacs得到我的Unicode字符串錯誤?
- 30. 正確顯示字符串
你代碼給我此輸出'長度 - 5 長度 - 4 長度 - 3 長度 - 2 長度 - 1 逆轉與字符串NNANAWNAWANAWAP' – Averroes