在2D数组中存储反向字符串

时间:2019-01-07 03:38:38

标签: java

我正在尝试获取字符串的内容,并将其存储在我的2D数组的最后一行中,这是我到目前为止所拥有的:

char[][] square = new char[5][5];
String number = new String("three");
for(int k = number.length() - 1; k >= 0; k--)
{
      square[4][k] = number.charAt(k);
}

代码给我的输出是非反转顺序的字符串。

这不是反转字符串的逻辑吗?我在这里所做的只是将第四列和所有从字符串末尾开始的行设置为其值。我想念什么?

谢谢

3 个答案:

答案 0 :(得分:1)

只需手动走遍循环。

第一次通过,k为4。

因此,将square [4] [4]设置为.charAt(4)返回的字符,即'e'。

然后square [4] [3]变成'e',...,square [4] [0]变成't'。

square [4]现在读取t,h,r,e,e。

您基本上已经颠倒了两端。试试这个:

for (int k = 0; k < number.length(); k++) {
    square[4][k] = number.charAt(number.length() - k - 1);
}

答案 1 :(得分:0)

是的,因为您没有反转。您将在同一位置重新设置相同的字符。如果您需要将其反转,那么逻辑应该是

square[4][number.length() - (k + 1)] = number.charAt(k);

答案 2 :(得分:0)

当您还从 { "testTIN": "123", "measurements": [ { "measureId": "001", "value": { "IsEndToEndReported": true, "PerformanceMet": 5 } }, { "measureId": "002", "value": { "IsEndToEndReported": true, "PerformanceMet": 6 } }, { "measureId": "003", "value": { "strata": [ { "IsEndToEndReported": true, "PerformanceMet": 5, "Stratum": "Level1" }, { "IsEndToEndReported": true, "PerformanceMet": 6, "Stratum": "Level2" } ] } } ] } 复制值时,除了square[4][k]以外,还需要其他索引-也就是说,您正在向后复制字符(但也向后复制到数组中)。无需致电number.charAt(k)。你可以做

new String(String)

但是我自己更喜欢char[][] square = new char[5][5]; String number = "three"; for (int i = 0; i < number.length(); i++) { int k = number.length() - i - 1; square[4][k] = number.charAt(i); } StringBuilder。喜欢,

StringBuilder.reverse()