如何使用java反转数组中的字符元素?

时间:2015-08-27 03:25:04

标签: java arrays string char reverse

我创建了一个小代码,要求用户输入任何单词,然后它会反转它。我无法弄清楚如何扭转它,所以请帮助。

这是我的代码:

package Test;
import java.util.Scanner;

public class TestMain {
public static void main(String[]args){

    String word = getWord();
    char[]wordArray;
    wordArray = word.toCharArray();
    System.out.print("NORMAL WORD: " + word + "\n");
    System.out.print("REVERSE WORD: ");


}

public static String getWord(){
    Scanner hold = new Scanner(System.in);
    String word;
    System.out.print("Enter a word:");
    word = hold.nextLine();
    return word;
}
}

6 个答案:

答案 0 :(得分:2)

StringBuilder有一个反向方法。

 System.out.print("REVERSE WORD: " + new StringBuilder(word).reverse().toString());

或者如果您不想使用内置方法

String result= "";
for(int i=word.length(); i>0; i--) {
    result+= word.charAt(i-1);
}  
 System.out.print("REVERSE WORD: " + result);

答案 1 :(得分:1)

这样做:
1.将字符串转换为字符数组 2.交换元素(第一个和最后一个 - >第二个和第二个 - >> ......直到中间) 3.您将获得O(n / 2)= O(n)的线性复杂度。

public static String reverseWord(String str)
{
    if(str.length()>0)
    {
        char arr[] = str.toCharArray();
        int length = arr.length;
        for(int i=0; i<length/2; i++)
        {
            char temp = arr[i];
            arr[i] = arr[length-i-1];
            arr[length-i-1] = temp;
        }
        return new String(arr);
    }
    return str;
}

答案 2 :(得分:0)

我使用StringBuilder构造反向字符串。 在你的主要方法。

    String word = getWord();
    StringBuilder sb = new StringBuilder();
    for(char c : word.toCharArray()) {
        sb.insert(0, c);
    }
    String reversed = sb.toString();
    System.out.print("NORMAL WORD: " + word);
    System.out.print("REVERSE WORD: " + reversed);

答案 3 :(得分:0)

让我们看看<div class="special panel_buttons arrowBtn" id='user_requests_button'> User Requests<div class="admin_alert_out_panel">2</div> </div> 中的代码:

main

char[]wordArray = word.toCharArray(); 是一组String,一个接一个。

我们需要在循环中将每个char添加到结果的开头:

char

这会导致第一个String result = ""; for(char wordChar : word.toCharArray()) { result = wordChar + result; } 最后一个,第二个变为倒数第二个等。这样我们就可以颠倒char的顺序。

答案 4 :(得分:0)

public static void main(String args[]) {
    String a = "12345";
    char [] original= a.toCharArray();
    char[] reverse = new char[a.length()];
    int j =0;
    for(int i=reverse.length-1; i>=0; i--) {
        reverse[j] = original[i]; 
        j++;
    }

    System.out.println(new String(reverse));
}

答案 5 :(得分:0)

public class test {
    public static void main(String[] args) {
        String word = "Stack Overflow";
        char[] wordArray = word.toCharArray();
        System.out.println("NORMAL WORD=" + Arrays.toString(wordArray));
        test.reverse(wordArray);
        System.out.println("REVERSE WORD=" + Arrays.toString(wordArray));
    }

    public static void reverse(char[] array) {
        if (array == null) {
            return;
        }
        int i = 0;
        int j = array.length - 1;
        char tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
    }
}

输出:

NORMAL WORD=[S, t, a, c, k,  , O, v, e, r, f, l, o, w]
REVERSE WORD=[w, o, l, f, r, e, v, O,  , k, c, a, t, S]