【问题标题】:Reversing string stack java反转字符串堆栈java
【发布时间】:2015-04-22 02:38:24
【问题描述】:

所以我正在尝试创建一个对象,该对象基本上反转某人输入的字符串。我能够让它反转单词顺序,但我需要让它使用堆栈来反转单词本身,所以这是我将字母输入堆栈的代码。

public class Reverser
{
   private Stack<String> stack;

   public Reverser()
   {
     stack = new Stack<String>();
   }

   public String evaluate(String expr)
   {
     Scanner in = new Scanner(expr);

     char letter;
     String sentence="";
     String rSent="";
     String word="";

     while(in.hasNext())
     {
       sentence = in.next();

       for (int i = 1; i <= sentence.length(); i++)
       {
           while (i <= sentence.length())
           {
             letter = sentence.charAt(i);
             word += letter;
           }
          stack.push(word);        
        }
     }
     while (!stack.isEmpty())
     {
     word = stack.pop();
     rSent += word;
     }
   return rSent;
   }  
} 

编译正常没有问题,但是当我运行我的驱动程序时

 public class StringReversing
  {
     public static void main(String[] args)
     {
       String sentence, result, again;

      Scanner in = new Scanner(System.in);

      do
      {
         Reverser evaluator = new Reverser();
         System.out.println("Please enter a sentence");
         sentence = in.nextLine();

         result = evaluator.evaluate(sentence);
         System.out.println();
         System.out.println("Your sentence reversed is:");
         System.out.println(result);

         System.out.println("Would you like to reverse another sentence [Y/N]?");
         again = in.nextLine();
         System.out.println();
      }
      while (again.equalsIgnoreCase("y"));
   }
} 

现在我输入一个句子,我什么也得不到。我错过了什么吗?

【问题讨论】:

  • 您能否详细说明“我能够让它反转单词顺序,但我需要让它使用堆栈来反转单词本身”是什么意思?您是否需要在某些作业问题中使用堆栈?为什么不使用 StringBuilder.reverse?
  • 是的,这是一项要求我使用堆栈来反转单词字母的作业。最初,我能够让它颠倒单词顺序——祝你有美好的一天。变成了day.niceaHave

标签: java


【解决方案1】:

你得到一个无限循环:

       for (int i = 1; i <= sentence.length(); i++)
       {
           while (i <= sentence.length())
           {
             letter = sentence.charAt(i);
             word += letter;
           }
          stack.push(word);        
        }

内部while 循环是一个无限循环,因为我将永远相同并且低于sentence.length()

Java 中的数组是从零开始的。 for 循环应该从零开始。

【讨论】:

    【解决方案2】:

    这不是已经解决了您的要求吗?

    String input = "I like this CAFEBABE.";
    System.out.println("reversed: " + new StringBuilder(input).reverse());
    

    【讨论】:

    • 不,它要求我使用堆栈来反转单词中的字母。
    • 那么您应该稍微修改一下您的问题以明确此要求。以输入和预期输出为例。也许有了所有已经给定的 cmets,您就可以解决您的问题。如果不。用您的新成就更新您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    相关资源
    最近更新 更多