/*
* 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"));
}
}
質問する
206 次
6 に答える
2
あなたの問題は、変数をクラス変数として使用することです。つまり、substr、temp、strLength、reversedは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"));
}
}
于 2013-06-18T07:48:44.767 に答える
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;
}
于 2013-06-18T07:43:56.413 に答える
0
temp 変数には、完全に反転された文字列が既に含まれています。交換すれば
return temp+revString(substr);
と
return temp;
あなたのコードは正しく動作します。
もちろん、@sotix は正しいです。このようなメンバー変数を使用しないでください。
于 2013-06-18T07:48:53.437 に答える