在Java

时间:2015-11-18 18:18:03

标签: java stack

我对编码很新,我正在尝试解决以下问题:
使用堆栈来反转句子的单词。继续阅读单词,直到你有一个以句点结尾的单词,将它们添加到堆栈中。如果您有一个带句点的单词,请将单词弹出并打印出来。当输入中没有更多单词时停止。例如,您应该输入输入:
玛丽有只小羊羔。它的羊毛像雪一样白 成:
羔羊很少有玛丽。白雪皑皑的雪 注意资本化和期间的安排。

我正在努力寻找如何扭转这些词语 - 我已经找到了许多反转角色的例子,但是我无法通过任何方式来反转完整的词语。这是我到目前为止所拥有的。我真的不明白String [] words = sentence.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方法中做错了。我希望我已经添加足够的信息告诉你我真的在尝试。

1 个答案:

答案 0 :(得分:0)

我对字符串值进行了硬编码。你也可以从用户那里获取意见

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