如何使用户可以连续输入,但可以使用符号来阻止它?

时间:2016-03-14 00:14:23

标签: java if-statement for-loop reverse

我目前有以下代码:

    import java.io.*;
    import java.util.*;


    public class Reverser
{   

public void run() throws IOException
{
  String text;
  String reverseText = "";

  Scanner input = new Scanner(System.in);

  System.out.println("Please enter text");
  text = input.nextLine();

  int length = text.length();

  for (int i=length-1; i >= 0; i--)


  reverseText = reverseText + text.charAt(i);



  System.out.println("Your characters in reverse are: "+reverseText);

   }

   }

我现在想要这样做,以便一旦用户键入某些内容,他们就可以在不必重新运行程序之后输入其他内容。然后我想要这样做,如果输入字符'*',它结束,你不能再输入任何东西。 for循环后是否需要if语句?

2 个答案:

答案 0 :(得分:1)

您需要使用某种循环,例如一个while循环并每次测试输入。

例如:

while (true) {
    System.out.println("Please enter text");
    text = input.nextLine();
    if ("*".equals(text)) {
        break;
    }

    // ...code to use 'text'...
}

while (true)循环将永远运行,但如果输入了星号,则测试if ("*".equals(text))将打破循环(使用break关键字)。

答案 1 :(得分:0)

  

for循环后是否需要if语句?

不,我不这么认为。

以下是执行此操作的方法之一

String text = "";
String reverseText = "";

Scanner input = new Scanner(System.in);

while (true) {
    System.out.println("Please enter text");
    text = input.nextLine();

    if (text.equals("*")) {
        break;
    }

    int length = text.length();

    for (int i=length-1; i >= 0; i--)
        reverseText = reverseText + text.charAt(i);
    System.out.println("Your characters in reverse are: "+reverseText);
    reverseText = "";
}

说明:while (true)块内的代码基本上保持循环和循环,直到input.nextLine()返回"*"。这就是break的作用。

你也可以在trim()上调用text,这样如果用户输入带有空格字符的星号,循环也会停止。

if (text.trim().equals("*"))

或者,您可以将上述条件放在while循环的括号中。

String text = "";
String reverseText = "";

Scanner input = new Scanner(System.in);

while (!text.trim().equals("*")) {
    System.out.println("Please enter text");
    text = input.nextLine();

    int length = text.length();

    for (int i=length-1; i >= 0; i--)
        reverseText = reverseText + text.charAt(i);
    System.out.println("Your characters in reverse are: "+reverseText);
    reverseText = "";
}

但这与第一次的表现略有不同。如果您输入了一个方法,则第一个方法不会打印*的反转,因为if位于for循环之前。另一方面,第二种方法打印*的反向,因为在while循环的每次迭代之后都会进行检查,就像if语句放在循环的末尾一样。