Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java反转数组中的字符元素?_Java_Arrays_String_Char_Reverse - Fatal编程技术网

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

如何使用java反转数组中的字符元素?,java,arrays,string,char,reverse,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();

我创建了一个小代码,要求用户输入任何单词,然后将其反转。我想不出如何扭转局面,因此非常感谢您的帮助

这是我的密码:

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;
}
}

我使用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);

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);

让我们看看
main
中的代码:

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

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

String result = "";
for(char wordChar : word.toCharArray()) {
    result = wordChar + result;
}
这将导致第一个
字符排在最后,第二个字符排在第二位,以此类推。这样我们可以颠倒
字符串的顺序

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));
}
输出:

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]

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

publicstaticstringreverseeword(stringstr)
{
如果(str.length()>0)
{
char arr[]=str.toCharArray();
int-length=arr.length;

对于(int i=0;i创建第二个数组,在第一个数组上循环,将每个字符放置在新数组的另一端…可能有点像旁注,但您可以将其更改为System.out.println(),而不是在print语句的末尾添加“\n”,它将自动在末尾添加新行。
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]
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;
}