我试图遍历2d char数组,但是我需要按列访问元素。问题是列的长度不固定,我的意思是ex。我的char数组包含这个。
abcde
kj
m
vghyed
erty
所需的输出:
akmve
bjgr
cht
dyy
ee
d
我尝试了所有方法,例如将每一行转换为字符串。可以像
一样访问2d数组中的行String mystr = String.valueOf(myChar[i]);
像这样使用嵌套循环
for(j=0;j<c;j++)
{
for(i=0;i<r;i++)
{
//if(mychar[i][j]!=null)
{
System.out.print(mychar[i][j]);
}
}
System.out.println();
}
给我
akhr
bjyt
cmey
dvd
哪个错了
但有没有办法明智地访问2d数组?
答案 0 :(得分:0)
String[] strings = new String[5];
int maxLength = //u fond the size of the longest string
for (int i=0; i<maxLength; i++) { //the number of lines u will get
for (int j=0; i<strings.length; i++) { //for each strings u have
if(j<strings[i].length)
print(strings[i].substring(j)
}
println;
}
没有理由你不能自己做 编辑:你实际上是由你自己做的。 试试&#34; System.out.print(mychar [j] [i]);&#34;代替
答案 1 :(得分:0)
添加一个变量后,您可以执行以下操作,这很容易,但看起来不太好:
int max = 0;
for (char[] a1 : a) {
max = max > a1.length ? max : a1.length;
}
这是为了找到最大的子阵列,所以你没有得到NullpointerException
,下面将打印你想要的输出:
for (int i = 0; i < max; i++) {
for (char[] a1 : a) {
if (i < a1.length) {
System.out.print(a1[i]);
}
}
System.out.println(); // only for newline
}
或者你可以这样混淆:
for (int i = 0, max = a[0].length; i < max; i++) {
for (char[] a1 : a) {
max = max > a1.length ? max : a1.length;
if (i < a1.length) {
System.out.print(a1[i]);
}
}
System.out.println(); // only for newline
}
这将擦除一个循环,变量'max'仅在需要它的循环中可用。