2016-11-17 13 views
0

これは私の改訂版です。私はint n文字の文字列をString sを繰り返して作成しようとしています。私が得ようとしている答えはtesttestteです。文字列を繰り返すことで 'n'文字列を出力する

これまで私がこれまで行ってきたことです。インデックスが4に達すると、文字列が4文字しかないので、インデックスが明白に外れたり、バインドされたりします。インデックスが3になると0に戻り、int nが満足するまで続けます(これは間違った単語かもしれません)。10.質問が十分明確でない場合は申し訳ありません。

public static void main(String[] args){ 

    beads("test", 10); 

    } 

public static void beads(String s, int n){ 

    char[] eachChar = new char[n]; 
    for (int index = 0; index < n; index++) { 
     eachChar[index] = s.charAt(index); 
    } 
    System.out.println(eachChar); 

    } 

答えて

3

一つの簡単な解決策は、文字列の長さ指標を法である:

eachChar[index] = s.charAt(index % s.length()); 
2

単にMOD(%)演算子を使用します。

public static void main(String[] args){ 
    beads("test", 10); 
} 

public static void beads(String s, int n){ 
    char[] eachChar = new char[n]; 
    for (int index = 0; index < n; index++) { 
     eachChar[index] = s.charAt(index%s.length()); 
    } 
    System.out.println(eachChar); 
} 
2

常に最速のアプローチのために行く

0

以下のバグがあるだろう終わりのように物事を行うための簡単な方法を探してみてください

String in = "test"; 
    int len = 10; 

    StringBuilder buf = new StringBuilder(); 
    while (buf.length() < len) { 
     buf.append(in); 
    } 
    System.out.println(buf.substring(0, len)); 

方法簡単かつlazier方法を考えてみましょうboutの配列に値をコピーするためにarrayCopyを使う。これは "string/stringbuilder etc ..."で使用されているのと同じ方法です。内部では を使用しています。

public static void main(String[] args) { 
      timesRepeat("test",30); 
     } 
     public static void timesRepeat(String input , int times) 
     { 
      char[] resultString = new char[times]; 
      //write in bouts 

      int fullPart = times/input.length(); 
      int partPart = times%input.length(); 
      for (int i =0 ; i< fullPart; i++) 
      { 
       System.arraycopy(input.toCharArray(), 0, resultString, (i*input.length()), input.length()); 
      } 

      System.arraycopy(input.toCharArray(), 0, resultString, (fullPart)*input.length(), partPart); 
      System.out.println(resultString); 
     } 
関連する問題