繁体   English   中英

我如何做到这一点,以便用户可以连续输入,但可以使用符号停止输入?

[英]How do I make it so the user has continuous input but can stop this with the use of a symbol?

我目前有以下代码:

    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语句?

您需要使用某种循环,例如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))输入星号,则测试if ("*".equals(text))是否会中断循环(使用break关键字)。

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作用。

您还可以在text上调用trim() ,这样,如果用户使用一些空白字符输入星号,循环也将停止。

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语句放在循环的末尾一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM