2010-08-22 58 views
1

我有ValueA和ValueB的数组(int类型)。我正在使用for循环读取阵列中的每个值。 我想连接一个字符串中的所有值。这些值应该在这样的连接的整数由Pipe分隔的值和':'使用java

ValueA1":"valueB1"|"ValueA2":"valueB2"|"ValueA3":"valueB3"|"ValueA4":"valueB4"|".... 

我想这在Java中的表格,请一些能够帮助东北我的代码..

+0

a)阵列的长度是否相等b)如果不是,我们应该怎样处理一个阵列的较长部分 – 2010-08-22 17:31:44

回答

2

你可以尝试这样的事情

int[] valueA = methodWhichFillsA(); 
int[] valueB = methodWhichFillsB(); 
StringBuilder sb = new StringBuilder(); 
int maxSize = Math.max(valueA.length, valueB.length); 
for(int i = 0; i < maxSize; i++){ 
    if(i > 0) 
     sb.append("|"); 

    if(i < valueA.length) 
     sb.append(valueA[i]); 

    sb.append(":"); 

    if(i < valueB.length) 
     sb.append(valueB[i]); 
} 
System.out.println(sb.toString()); 

这将评估valueA和valueB之间的最大数组的大小,在此大小上循环。如果元素存在,则打印它。 第一个if用于添加分隔符,如果是第一次迭代,则不需要“|”

+0

感谢您的回复。你是男人... – Salman 2010-08-22 20:35:47

1

假设阵列是不同大小的,这种解决方案会一起压缩它们,直到短数组的末尾:

StringBuilder sb = new StringBuilder(); 
for(int i = 0; i < Math.min(arr1.length, arr2.length); i++){ 
    sb.append(arr1[i]).append("\":\"").append(arr2[i]).append("\"|\""); 
} 
System.out.println(sb.toString()); 
+0

这两个数组都有相等的长度..谢谢你的答复seanizer你的答案 – Salman 2010-08-22 20:37:41

1

只是做的一种不同的方式,这里采用番石榴

private String test(int[] a, int[] b) { 

    List<Integer> al = Lists.newArrayList(); 
    List<Integer> bl = Lists.newArrayList(); 
    for (Integer ai : a) { 
     al.add(ai); 
    } 
    for (Integer bi : b) { 
     bl.add(bi); 
    } 

    List<String> sets = Lists.newArrayList(); 
    Iterator<Integer> itera = al.iterator(); 
    Iterator<Integer> iterb = bl.iterator(); 
    while(itera.hasNext() && iterb.hasNext()) { 
     sets.add(itera.next()+":"+iterb.next()); 
    } 

    return Joiner.on("|").join(sets); 

} 

我很惊讶地发现没有原始数组来列出方法。如果你能想到一个优雅的方式来做到这一点,除了把它拉出来另一种方法,这个代码可以变得更清洁。

相关问题