Java - 使用Stacks

时间:2017-10-26 00:11:52

标签: java stack

我正在尝试创建一个接受字符串作为输入的方法,并返回另一个字符串,该字符串使用Stacks反转输入中每个句子的顺序。例如,如果用户输入“hi there.i like red”。输出的字符串应该是“喜欢。像我一样红。”。我创建的以下程序只适用于一个句子。我怎样才能修改方法以识别句点,然后重新开始该方法?目前,如果我输入“hi there”,输出就是“hi hi”,这很好。但是,如果我输入“hi那里。我喜欢红色。”,输出是“红色。就像我在那里。喂”。如何修改此reverseSentence方法以识别句点并重新开始下一句?任何建议或提示都会非常有用。

//Reverses the order of words inside of sentences.

import java.util.*;
import java.util.regex.*;

public class reverse {

  //reverses the string using a stack
  private static String reverseSentence(String inputString) {

     String[] arrString = inputString.trim().split(Pattern.quote(" "));
     Stack stack = new Stack();

     for(String word : arrString) 
     {
       stack.push(word);
     }
    StringBuilder builder = new StringBuilder();
    while( !stack.isEmpty()) 
    {
      builder.append(stack.pop()).append(" ");
    }
    return builder.toString();
  }

  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Stack<String> stack = new Stack<String>();

    System.out.printf("Enter a sentence: ");
    String sentence = scanner.nextLine();

    if (sentence == null || sentence.length() == 0) {
      System.out.println("Invalid...");
      return;
    }

    String reverse = reverseSentence(sentence);
    System.out.printf("Reversed string using stack is : %s", reverse);


    while (!stack.isEmpty()) {
      System.out.print(stack.pop() + " ");
    }
  }
}

3 个答案:

答案 0 :(得分:0)

在分割空间的输入之前,按周期修剪它并在for循环中为你之前获得的每个句子/分裂部分运行方法内的逻辑。

在你的main方法中,而不是调用reverseSentence:

String[] sentences = sentence.trim().split(Pattern.quote("."));
for (String toReverse : sentences) {
                            System.out.print(reverseSentece(toReverse));
} 

我知道这不完美,但我希望能够了解我的意思,因为我在手机上打字。

答案 1 :(得分:0)

使用字符串拆分方法。 可能String[] sentences = sentence.split ("\\.");

答案 2 :(得分:0)

有两种方法可以实现这一目标:

  1. 首先将字符串拆分为&#39;。&#39;,为您提供字符串中的句子列表。将你的逻辑应用于每个句子。输出以句号分隔的每个反向句子。

  2. 使用您当前的逻辑,但在将任何单词添加到堆叠之前,请检查单词的最后一个字符是否为句点。如果是,这意味着它是一个句子的结尾。弹出堆栈直到空并显示内容。 (这将显示倒转的句子,直到这里)继续下一个单词。

  3. 希望这有帮助!