我对编码很陌生,我正在努力解决以下问题:
用一个叠词来颠倒句子中的单词。继续阅读单词,直到你有一个以句点结尾的单词,并将它们添加到堆栈中。当你有一个带句号的单词时,把这些单词弹出并打印出来。当输入中没有更多单词时停止。例如,您应该打开输入:
玛丽有一只小羊羔。它的羊毛像雪一样白
进入:
小羊羔有玛丽。雪像羊毛一样洁白
注意资本化和期间的安排
我正在努力寻找如何反转单词——我已经找到了很多反转字符的例子,但我无法找到任何方法来反转完整的单词。这是我迄今为止所拥有的。我真的不懂String[]words=句子.split(");行,但我发现在很多解决方案中。。。这是在创建一个单词数组,然后我可以把它推到堆栈上吗
import java.util.Scanner;
import java.util.Stack;
public class Task03 {
public static void main(String[] args) {
String sentence;
System.out.println("Enter a sentence: ");
Scanner input = new Scanner(System.in);
sentence = input.next();
printStack(sentence);
}
private static void printStack(String sentence) {
Stack<String> stack = new Stack<>();
String[] sentenceArray = sentence.split(" ");
String reversed = "";
for (String words: sentenceArray) {
stack.push(words);
}
while (!stack.isEmpty()){
reversed += stack.pop();
}
System.out.println("Reverse is: " + reversed);
}
}
它的输出只是返回句子中的第一个单词,所以我在printStack方法中做了一些错误的事情。我希望我已经添加了足够的内容来向你表明我真的在努力。
我已经对字符串值进行了硬编码。你也可以接受用户的输入
class StringRev{
public static void main(String args[]){
String str = "He is the one";
String temp = "";
String finalString = "";
for(int i =str.length()-1;i>=0;i--){
temp +=i!=0?str.charAt(i):str.charAt(i)+" ";
if(str.charAt(i) == ' '||i==0){
for(int j=temp.length()-1;j>=0;j--){
finalString += temp.charAt(j);
}
temp = "";
}
}
System.out.println(finalString);
}
}