我正在努力,但我不能这样做。这段代码有地址输出我想从双数组转换为字符串数组。这段代码有什么问题。
public static String[][] getStrings(double[][] a) {
double[][] c = { {2.0, 3.1,3,7}, {1.5,5.8,9.6,1} };
String[][] s2d = new String[c.length][c.length];
for (int i = 0; i < s2d.length; i++) {
for(int j=0; j<s2d[i].length;j++){
s2d[i][j]=String.valueOf(c);
System.out.println(s2d);
}
}
return s2d;
}
这是我的输出:
[[Ljava.lang.String;2a139a55
[[Ljava.lang.String;2a139a55
[[Ljava.lang.String;2a139a55
[[Ljava.lang.String;2a139a55
[[Ljava.lang.String;2a139a55
答案 0 :(得分:0)
IF NumericText({?ASOFDATE}) THEN
"[" + ToText(pwFormatDate(ToNumber({?ASOFDATE}))) + "]"
ELSE
"[ ]"
应该是
String[][] s2d = new String[c.length][c.length];
当您创建2x2矩阵而不是2x4
时,您将超出界限此外,Java本质上的阵列没有漂亮的打印。 使用Arrays.deepToString正确输出数组。修正了@ PaulBoddington的评论。
答案 1 :(得分:0)
您的代码有几个问题,但直接导致意外输出/结果的问题是这个......
s2d[i][j]=String.valueOf(c);
......应该......
s2d[i][j] = String.valueOf(c[i][j]);
答案 2 :(得分:0)
此代码中存在多个问题。这是一个解决方案,比您拥有的解决方案更直观,让您免于头痛。
在您的方法中,您创建一个新的String
数组数组,其数组与double[][]
参数中包含的数组一样多。由于每个数组的大小可能不同,我们不会初始化它。
new String[a.length][];
然后,我们遍历所有双打数组,使用Arrays#toString()
将它们转换为String
(我们修剪"[" "]"
,它是此方法输出的第一个和最后一个字符并将它拆分为一个字符串数组。
public static String[][] getStrings(double[][] a) {
String[][] output = new String[a.length][];
int i = 0;
for (double[] d : a){
output[i++] = Arrays.toString(d).replace("[", "").replace("]", "").split(",");
}
return output;
}
public static void main(String[]a) {
double[][] ds = { { 2.0, 3.1, 3, 7 }, { 1.5, 5.8, 9.6, 1 } };
for (String[] s : getStrings(ds)){
System.out.println(Arrays.toString(s));
}
}
[2.0, 3.1, 3.0, 7.0]
[1.5, 5.8, 9.6, 1.0]
答案 3 :(得分:0)
你的代码有点奇怪......比如你把double [] [] a作为参数但从不使用它。 顺便说一下,你得到的原因是&#34;地址输出&#34;是因为您将s2d中的每个变量设置为String,其值为数组c而不是单个双精度。
要解决您的问题,您应该使用
s2d[i][j] = String.valueOf(a[i][j]);
代替s2d[i][j]=String.valueOf(a);