我有一个2D字符数组,我想在每个嵌套数组中打印每五个字符的前三个字符。这就是我在做的事情:
char [][] one ={ {'a','b','c','d','e','f','g','h','3'},{'i','j','k','l','m','n','o','p','7'},{'q','r','s','t','u','v','w','x','2'}};
int aSize=5;
char [] firstThree=new char[3];
for (int i=0; i< one.length;i++){
for (int j=0; j< aSize;j++){
for(int m=0; m<3;m++){
firstThree[m]=one[i][m];
}
}
System.out.print(firstThree);
System.out.println("");
}
这给出了以下输出:
abc
ijk
qrs
我想要输出:
abc
fgh
ijk
nop
qrs
vwx
答案 0 :(得分:0)
你可以这样做:
for (int j=5; j < 8;j++){
firstThree[j-5]=one[i][j];
}
你不需要3个循环来做这件事......
答案 1 :(得分:0)
您可以创建另一个数组,以便在5个索引后读取,如:
<package id="Foo" version="1.0.0-dev1401291727ef87505" />
答案 2 :(得分:0)
这可以动态地完成它,因此它可以用于更长的输入长度。
请注意,第三个嵌套循环不是必需的,您只需要完全遍历每个嵌套数组,使用count
变量来跟踪您在每个五个中添加前三个的问题字符。
请注意,我还使用ArrayList<String>
来跟踪应该打印的三个字符序列,但这不是必需的,您可以直接在(count == 3)
情况下打印。 / p>
import java.util.ArrayList;
public class PrintThreeOfFive
{
public static void main(String[] args)
{
char [][] one ={ {'a','b','c','d','e','f','g','h','3'},{'i','j','k','l','m','n','o','p','7'},{'q','r','s','t','u','v','w','x','2'}};
int aSize=5;
ArrayList<String> output = new ArrayList<String>();
char [] firstThree=new char[3];
for (int i=0; i< one.length;i++){
int count = 0;
for (int j=0; j < one[i].length; j++){
//re-set count at the 5th character
if (count == 4){
count = 0;
continue; //continue so that the fifth character is not added
}
//if in first three of five, add it to firstThree
if (count < 3){
firstThree[count]=one[i][j];
}
//increment count, and add to the list if at the third character
count++;
if (count == 3){
output.add(new String(firstThree));
}
}
}
for (String s : output){
System.out.println(s);
}
}
}
输出:
abc
fgh
ijk
nop
qrs
vwx
答案 3 :(得分:0)
我认为@Masud很接近,但他的解决方案有一些运行时错误。请稍微改变你的索引来解决这个问题。
for(int m=0; m<3;m++){
firstThree[m]=one[i][m];
nextThree[m]=one[i][m+5];
}