簡體   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