关于数组并打印出新排序的数组?

时间:2014-03-25 18:36:10

标签: java arrays

这是我的代码,用于反转数组的顺序:

int array[x];
String temp;

String reversedOrder = "";

for (int i = 0; i < x/2; i++)
 {
 temp = array[i];
 array[i] = array[x-1 - i];
 array[x-1 - i] = temp;
 reversedOrder = reversedOrder + array[i];
 }
System.out.println(reversedOrder);

我的问题是如何打印出这个新排序的数组?我尝试声明一个字符串并将其放在for循环中,但它不会按照我想要的方式打印:让我们说&#34; Hello World我在这里&#34;我需要它打印出来&#34; olleHdlroWImaereh&#34;但所有它打印的是前两个反转的词&#34; olleHdlroW&#34;并在那里结束。

感谢任何帮助。谢谢。

*我试图在我的OWN空闲时间写出这个程序。

*感谢大家帮助我完成我的课程。在添加类似于Elliot的for循环之后,它终于起作用了。 :欢呼。

3 个答案:

答案 0 :(得分:1)

首先,最简单的方法是使用Arrays#toString()。其次,您的代码存在一些问题,

int[] array = { 1, 2, 3 }; // <-- your array declaration isn't valid.
// String temp; // <-- A String is not an int.
int x = array.length; // <-- added to demonstrate

for (int i = 0; i < x / 2; i++) {
    // This is a swap with no temporary storage, also known as the
    // http://en.wikipedia.org/wiki/XOR_swap_algorithm
    array[i] ^= array[x - 1 - i];
    array[x - 1 - i] ^= array[i];
    array[i] ^= array[x - 1 - i];
}
System.out.println(Arrays.toString(array));

输出

[3, 2, 1]

修改

删除Arrays.toString(),并将其替换为类似的内容 -

StringBuilder sb = new StringBuilder();
for (int i : array) {
    sb.append(i);
}
System.out.println(sb.toString());

输出

321

编辑2

或者,您可以使用

for (int i : array) {
    System.out.print(i);
}
System.out.println();

哪个也会输出

321

答案 1 :(得分:0)

使用Arrays类打印用户友好的array

字符串
Arrays.toString(array);

试试这个:

    String[] array = new String[] { "Hello", "World", "I", "am", "here" };

    String[] newArray = new String[array.length];

    for (int i = 0; i < array.length; i++) {
        newArray[array.length - 1 - i] = new StringBuilder(array[i]).reverse().toString();
    }

    System.out.println(Arrays.toString(newArray));

- 编辑 -

使用此字符串以字符串格式打印array,不带任何逗号和括号

    String str = Arrays.toString(array).replaceAll(", ", "");
    System.out.println(str.substring(1, str.length() - 1));

答案 2 :(得分:0)

您的反向逻辑看起来是正确的,但是当您遍历charArray的一半时,您试图附加您的reversedOrder字符串。

您可以在for循环后使用String(char[])构造函数将整个反向charArray作为String。

@Test
public void reverse() {
  char[] charArray = "Hello World I am here".toCharArray();
  int x = charArray.length;

  for (int i = 0; i < x/2; i++) {
    char temp = charArray[i];
    charArray[i] = charArray[x-1 - i];
    charArray[x-1 - i] = temp;
  }

  String expected = "ereh ma I dlroW olleH";
  assertEquals(expected, new String(charArray));
}