[英]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.