在java中的字符串中旋转单词

时间:2013-11-21 21:22:05

标签: java arrays string rotation word

该程序应该采用用户输入的句子,例如“我很饿”,然后要求旋转多个单词。如果数字为2,则新输出将“非常饥饿”。这是我的代码到目前为止,但我似乎有一个错误。当我运行代码时,会出现:java.util.InputMismatchException。它下面还有一些其他信息,但我不确定它的含义。到目前为止,这是我的代码。

import java.util.*;
public class WordRotation
{
  public static void main(String[] args)
  {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a sentence");

     if(input.hasNext());
    {
      String s = input.next();

      String[] words = s.split(" ");

      System.out.println("Enter number of words to be rotated");
      int rotation = input.nextInt();

      for (int i = 0;i < words.length;i++)
      {
        System.out.print(words[(i + words.length - rotation)%words.length] + " ");
      }
    }
  }
}

我尝试将我的if语句更改为while语句,但代码从不输出任何内容,只是继续加载。

2 个答案:

答案 0 :(得分:2)

String s = input.next();更改为String s = input.nextLine();


是的,它实际上是一个解决方案,因为在我们点击Enter后,在我们点击\n并且Enter读取.nextInt() <后,仍有\n在流中强>和你的号码。如果我们使用input.nextLine()代替input.next(),我们会捕获\n,而input.nextInt()将会在没有\n的情况下读取下一个整数。

还有更多信息https://stackoverflow.com/a/7056782/1366360

答案 1 :(得分:0)

您需要在

之后再次阅读输入
  System.out.println("Enter number of words to be rotated");

添加此行

Scanner input2 = new Scanner(System.in);
  int rotation = input2.nextInt();