2016-11-17 48 views
0

Dies ist für meine Revision. Ich versuche, eine Zeichenfolge von int n Zeichen zu erstellen, indem ich String s wiederhole. Die Antwort, die ich versuche, ist testtestte.Drucken einer Zeichenfolge von 'n' Zeichen durch Wiederholen einer Zeichenfolge

Das ist was ich bisher habe. Wenn der Index 4 erreicht, ist er offensichtlich out oder gebunden, da die Zeichenfolge nur 4 Zeichen enthält. Ich will es so, dass, wenn der Index 3 erreicht, er auf 0 zurückgeht und weitergeht, bis int n befriedigt (dies könnte das falsche Wort sein). 10. Entschuldigung, wenn die Frage nicht klar genug ist.

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); 

    } 

Antwort

3

Eine einfache Lösung ist der Index von der Länge der Zeichenkette auf Modulo:

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

einfach mod (%) Operator verwenden.

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

Betrachten wir eine Art und Weise einfacher und fauler Weg

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

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

Immer versuchen, einen einfacheren Weg zu finden, Dinge zu tun, wie am Ende wird es weniger Bugs

0

Anstreben der schnellste Ansatz ist Verwenden von arrayCopy, um Werte in Arrays in Arrays zu kopieren. Dies ist die gleiche Methode, die von "string/stringbuilder etc .." verwendet wird. Intern unten ist, wie man es benutzt

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); 
     } 
Verwandte Themen