2017-07-27 4 views
-3

passString()メソッドと同じ働きをする新しいメソッドを作成するpassStringBuilder()メソッドを追加する方法はありますか?これは、StringオブジェクトではなくStringBuilderオブジェクトで動作する必要があります。よろしく。文字列をStringBuilderに置き換えますか?

import intertech.MyDate; 
public class PassByExperiment { 

    public static void main(String[] args) { 

     MyDate date = new MyDate(1, 20, 2008); 
     System.out.println("Before passing an object " + date); 
     passObject(date); 

     System.out.println("After passing an object " + date); 
     System.out.println("Before passing a primitive " + 
     date.year); 

     passPrimitive(date.year); 
     System.out.println("After passing a primitive " + 
     date.year); 

     String x = date.toString(); 
     System.out.println("Before passing a String " + x); 
     passString(x); 
     System.out.println("After passing a String " + x); 
    } 

    public static void passObject(MyDate d) { 
     d.year = 2009; 
    } 

    public static void passPrimitive(int i) { 
     i = 2010; 
    } 

    public static void passString(String s) 
    { 
     int yearSlash = s.lastIndexOf('/');  
     s = s.substring(0, yearSlash + 1); 
     s += "2012"; 

     System.out.println("New date string: " + s); 
    } 
} 

これは私が試したものです:

public static void passStringBuilder(StringBuilder sb) { 
    int yearSlashSB = sb.lastIndexOf('/'); 
    sb = sb.substring(0, yearSlashSB + 1); 
    sb.append("2012"); 
    System.out.println("New date string: " + sb); 
} 
+1

最初の*形式*あなたのコードが正しく – Lino

+1

'StringBuilder'のJavaDocをチェックすることをお勧めしたいです。あなたは 'lastIndexOf'、' delete'、 'append'というメソッドを見つけることができます。 –

+0

誰かが私のための例を持っていれば、私は何もしようとしなかったが、完璧になるだろう...これは私の最初の投稿だった。 –

答えて

0

StringBuilderは、あなたが他のObjectとして渡すことができますクラスです。

public static void passStringBuilder(StringBuilder sb) { 
    int yearSlash = sb.lastIndexOf("/"); 
    sb.delete(yearSlash + 1, sb.length()); 
    sb,append("2012"); 
    System.out.println("New date string: " + sb.toString()); 
} 

StringBuilder#substringは残して、部分文字列であるStringを返します。 sbそのままです。特定の文字を削除する必要があります。

基本的にStringBuilderには文字が含まれており、簡単に操作できます。その後、Stringを抽出することができます。 substringまたはtoStringを使用できます。

Java 8以降では、Javaによってが自動的にStringBuilderに変更されるため、Java 8以降では連結に使用する意味がありません。

+0

あなたは私に答える時間を費やして最高です。 –

-1

要件は、自然の中で純粋に学術的なことがなければ、私は

public static void passStringBuilder(StringBuilder sb) { 
    passString(sb.toString()); 
} 
+0

これは、passByメカニズムの理解にどのように役立ちますか? – xenteros

+0

Opは、同じ機能を実行するためにメソッドにオブジェクトを渡す方法について質問していました。これは学問的質問でなければ、これは要件の最も明快な表現です。私はStringBuilderをどのように使用しますか? –

関連する問題