簡體   English   中英

Java程序反轉句子中的單個單詞

[英]Java Program to reverse individual words in the sentence

我正在嘗試編寫一個 java 程序來反轉句子中的每個單詞。 例如,如果句子是“Hello World.Hello Java”。 ,輸出應該是"olleH dlroW. olleH avaJ" 我能夠做相反的事情,但我得到的輸出是“olleH .dlroW olleH .avaJ” ,其中連點都被顛倒了,這不應該發生。 有人可以幫我解決嗎?

謝謝!!

我試過這樣的事情:

import java.util.Scanner;

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

        System.out.println("Enter a string to be reversed:");
        Scanner input = new Scanner(System.in);

        String reverse = "";

        while(input.hasNextLine())
        {
            String str = input.next();
            for(int i = str.length()-1; i >= 0; i--)
            {
                reverse = reverse + str.charAt(i);
            }
            reverse += " ";
            System.out.println(reverse);
        }
    }

}

預期輸出: olleH dlroW。 olleH avaJ.

我得到的輸出:

奧列

olleH.dlroW

olleH .dlroW olleH

olleH .dlroW olleH .avaJ

這是java 8的解決方案,如果你想限制其他特殊字符,你可能需要修改replaceChar方法。

public static void main(String[] args) {
    String str = "Hello World. Hello Java.";
    String collect = Arrays.stream(str.split("\\s+"))  // split sentences into words
            .map(s -> new StringBuffer(s))             // converting to StringBuffer
            .map(s -> s.reverse())                     // reversing the string
            .map(s -> replaceChar(s))                  // replace first char if it is dot
            .collect(Collectors.joining(" "));         // join all the words

    System.out.println(collect);

}

private static String replaceChar(StringBuffer stringBuffer) {
    if(stringBuffer.charAt(0) == '.') {
        stringBuffer.deleteCharAt(0);
        return stringBuffer.toString() + ".";
    }

    return stringBuffer.toString();
}

如果你想以命令式風格來做,你可以修改你的代碼,如下所示:

String str = "Hello World. Hello Java.";
String[] tokens = str.split("\\s+");
String reverseString = "";
for (String token : tokens) {
    String reverse = "";
    for (int i = token.length() - 1; i >= 0; i--) {
        reverse = reverse + token.charAt(i);
    }
    if(reverse.charAt(0) == '.') {
        reverse = reverse.substring(1) + ".";
    }
    reverseString = reverseString + " " + reverse;
}
System.out.println(reverseString);

在您的代碼中稍作更改以處理 . 用言語。

import java.util.Scanner;
public class HelloWorld{
    public static void main(String []args){
        System.out.println("Enter a string to be reversed:");
        Scanner input = new Scanner(System.in);

        String reverse = "";

        while(input.hasNextLine())
        {
            String str = input.next();
            if(str.contains(".")){
                str = str.replace(".","");
                for(int i = str.length()-1; i >= 0; i--)
                {
                    reverse = reverse + str.charAt(i);
                }
                reverse = reverse+".";
            }
            else{
                for(int i = str.length()-1; i >= 0; i--)
                {
                    reverse = reverse + str.charAt(i);
                }
            }
            reverse += " ";
            System.out.println(reverse);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM