如何根据用户的输入调用此代码?

时间:2014-11-20 22:22:47

标签: java loops

我的代码在这里检查用户输入的单词是否是回文。它正确执行它只是如果用户试图通过按“1”循环它。该计划结束。我该如何解决这个问题?

int answer =0;

 String original, backwards = "";
  Scanner input = new Scanner(System.in);

  System.out.println("A palindrome is a word that is the same forwards as it is backwards. Enter     a word to check if it is a palindrome or not.");
  original = input.nextLine();

  int length = original.length();
 do {
  for ( int i = length - 1; i >= 0; i-- )
     backwards = backwards + original.charAt(i);

  if (original.equals(backwards))
     System.out.println("The entered phrase is a palindrome.");
  else
     System.out.println("The entered phrase is not a palindrome.");

}
  while (answer ==1);
  System.out.println("If you would like to check another word press 1. If you wish to exit, press     2.");
  answer = input.nextInt();
  if (answer ==1){
      System.out.println("Enter another word");
    }
 else if (answer == 2){
 System.out.println("Have a nice day");
 }
  }
 }

以下是该程序的示例输出:

回文是一个向前和向后相同的词。输入一个单词以检查它是否是回文。

赛车

输入的短语是回文。

如果要查看其他单词,请按1.如果要退出,请按2.

1

输入另一个单词

5 个答案:

答案 0 :(得分:2)

您的循环在用户选择是否要输入1或2之前完成。它是do...while循环,因此它以while结束。所以它只执行一次 - 因为只要检查回文,接下来就要检查答案是否为1.但是此时用户还没有输入1或2。

因此,您应该在} while ( answer == 1 )关闭后将if...else...部分移动到该行,以检查用户的回答是什么。

此外,如果答案是1,您应该要求另一个输入。您要求输入的唯一位置是在循环开始之前。如果用户回答1,您应该再次运行original = input.nextLine();。请注意 - 您可能需要运行两个input.nextLine(),因为扫描程序会认为12之后的其余部分是您的意思。

答案 1 :(得分:0)

您的扫描仪要求使用nextLine,但您要求使用int。 nextLine意味着它将把nextLine中键入的内容作为字符串。

简单修复是将1和2替换为字符a和b。

复杂的方法是将字符串解析为整数。

答案 2 :(得分:0)

将回文检查作为一种方法,然后在用户输入为1的情况下调用该方法。

在您的代码中,如果用户inout等于1,则它不会执行任何操作。

我只是原样使用了您的扫描仪对象。您可以在类中声明它们以在所有方法中使用它。

    public void palindrome(String S){

    int answer =0;

     String original, backwards = "";
      Scanner input = new Scanner(System.in);

      System.out.println("A palindrome is a word that is the same forwards as it is backwards. Enter     a word to check if it is a palindrome or not.");
      original = input.nextLine();

      int length = original.length();
     do {
      for ( int i = length - 1; i >= 0; i-- )
         backwards = backwards + original.charAt(i);

      if (original.equals(backwards))
         System.out.println("The entered phrase is a palindrome.");
      else
         System.out.println("The entered phrase is not a palindrome.");

    }
      while (answer ==1);


System.out.println("If you would like to check another word press 1. If you wish to exit, press     2.");
 int option= input.nextInt();
  if (option==1){
      System.out.println("Enter another word");
     String word= input.readLine();
      palindrome(word);
    }

答案 3 :(得分:0)

如果用户想要在while循环中输入其他作品,则需要进行检查。但与此同时,请注意将所有变量重置为原始值,因此最好将它们设置在while循环中。像这样:

import java.util.Scanner;

public class Palidrome {
    public static void main(String[] args) {
        int answer = 0;

        Scanner input = new Scanner(System.in);
        String original;

        System.out
            .println("A palindrome is a word that is the same forwards as it is backwards. Enter     a word to check if it is a palindrome or not.");


        while( true ) {
            original = input.nextLine();
            String backwards = "";
            int length = original.length(); 

            for (int i = length - 1; i >= 0; i--)
                backwards = backwards + original.charAt(i);

            if (original.equals(backwards))
                System.out.println("The entered phrase " + original + " is a palindrome.");
            else
                System.out.println("The entered phrase " + original + " is not a palindrome.");

            System.out.println("If you wish to exit, press     2");
            answer = input.nextInt();

            if(answer == 2) {
                System.out.println("Have a nice day");
                break;
            }
            input.nextLine();
            System.out.println("Enter another word");
        }
        input.close();
    }
}    

答案 4 :(得分:0)

do while循环的工作方式与常规while循环的工作方式相同,只是省略了第一个条件检查。如果满足while中的条件,则将继续执行do块中的代码。但是,从来没有遇到过这种情况,你能明白为什么吗?即使满足这个条件,也不是您接下来要执行的代码。下面的代码while不是do-while循环的一部分。你需要在最后两个条件块之后移动。 The Java docs on while循环应该是一个有用的读物​​。