2015-10-06 71 views
0

我正在循环将数据写入字符串数组。但我想要的是,我创建了另一个循环,我将遍历values的数据,最多为amount,但我想就如何这样做提供一些指导。循环创建自定义字符串

String[] s = new String[20]; 
String[] values = { "A", "B", "C", "D" }; 
final int amount = 2; 

for (int i = 0; i < s.length; i++) { 
    s[i] = String.format("%s%04d", values[0], i); //TODO create another loop? 
} 
System.out.println(Arrays.toString(s)); 

的首选输出应该是:

A0000, A0001, B0002, B0003, C0004, ... 

实际的输出是:

A0000, A0001, A0002, A0003, A0004, ... 
+0

请指定实际输出,显示您想要的完整输出。 –

+0

@ rakeb.void我编辑了原文。 –

+0

您的“首选”和“实际”输出完全不同意。请协调这一点。 –

回答

2

问题:你的循环是错误的。

试试这个:

public static void main(String[] args) { 

      int k=0; 
      String[] s = new String[20]; 
      String[] values = { "A", "B", "C", "D" }; 
      final int amount = 2; 
      for (int i = 0; i < values.length; i++){ 

       for (int j = 0; j < amount; j++){ //data of values as much as amount 
        s[k++] = String.format("%s%04d", values[i], k); 
       } 
      } 
      System.out.println(Arrays.toString(Arrays.copyOf(s,k))); 
    } 

输出:

[A0001, A0002, B0003, B0004, C0005, C0006, D0007, D0008] 
1

用户需要通过实际values阵列有2个回路一个循环,然后另外一个则是amount(次数) 。

试试这个

List<String> a = new ArrayList<String>(); 
    String[] values = { "A", "B", "C", "D" }; 
    final int amount = 2; 
    int incrementVariable = 0; 
    for (int i = 0; i < values.length; i++){ 
     for(int j = 0; j< amount; j++){ 
      a.add(String.format("%s%04d", values[i], incrementVariable)); 
      incrementVariable +=1; 
     } 
    } 
    System.out.println(a); 
} 

输出:

[A0000, A0001, B0002, B0003, C0004, C0005, D0006, D0007] 
0

我喜欢while循环更好:)

String[] s = new String[10]; 
String[] values = {"A", "B", "C", "D"}; 
final int amount = 2; 

for (int i = 0; i < values.length; ++i) { 
    int buffer = 0; 
    while(buffer <= amount) { 
     int index = i * amount + buffer; 
     s[index] = values[i] + String.format("%04d", index); 
     buffer++; 
    } 
} 

System.out.println(Arrays.toString(s)); 

[A0000,A0001,B0002,B0003,C0004,C0005 ,D0006,D0007,D0008,null]