簡體   English   中英

如何使用用戶輸入在 java 中創建一個循環,並使變量成為最后一個輸入和上一個輸入?

[英]How can I make a loop in java with user input and have variables that are the last input and previous input?

我正在嘗試制作一個循環,該循環接受用戶輸入,直到輸入小於或等於零的數字或輸入等於前一個數字的數字。 我無法弄清楚如何將用戶先前的輸入編碼為變量。

方向

編寫一個程序,名稱為 class Problem2 並具有 main 方法。

在 main 方法中,提示用戶輸入正整數,直到用戶輸入小於或等於 0 的值,或者輸入的數字小於或等於之前輸入的數字。

一步是輸入的 integer 和之前輸入的值 integer 之間的正差。計算大步數(大於 5 的差異)和小步數(小於或等於 5 的差異)。 打印出大步和小步以及導致程序結束的數字。

例子:

Enter a positive integer: -10 
Big steps: 0 
Small steps: 0 
Ending value: -10 


Enter a positive integer: 1 
Enter a positive integer: -3 
Big steps: 0 
Small steps: 0 
Ending value: -3 


Enter a positive integer: 4 
Enter a positive integer: 12 
Enter a positive integer: 13 
Enter a positive integer: 15 
Enter a positive integer: 21     
Enter a positive integer: 26 
Enter a positive integer: 21 
Big steps: 2 
Small steps: 3 
Ending value: 21 



Enter a positive integer: 71 
Enter a positive integer: 72 
Enter a positive integer: 72 
Big steps: 0 
Small steps: 1 
Ending value: 72 
 

Enter a positive integer: 45 
Enter a positive integer: 62 
Enter a positive integer: 0 
Big steps: 1 
Small steps: 0 
Ending value: 0 

如果它不斷變化,我怎樣才能使一個變量等於以前的數字?

我是如何理解的:例如,您總共有五個輸入將由用戶輸入:12、15、26、31、48。

一旦您有 12、15、26,那么最后輸入的數字是 26,之前輸入的數字是 15。當輸入 31 和 48 時,最后一個數字變為 48,之前的數字變為 31。如果有更多數字,那么最后一個input 和 previous input 將繼續更改,直到循環結束。

如果數字一直在變化直到循環結束,我如何創建一個等於用戶先前輸入的數字的變量?

我理解正確還是我做錯了?

到目前為止我的代碼:

public static void main(String args[]) {
    // create variables
    int numberOfBigSteps = 0;
    int numberOfSmallSteps = 0;
    int currentEntry = 0;
    int previousEntry = 0;

    Scanner scan = new Scanner(System.in);

    while (currentEntry > 0) {

        // loop user input until the user enters a number that is either
        // a) less than or equal to 0
        // b) less than the previous number

        // currently it is not working at all and I can't enter any numbers

        System.out.print("Enter a positive integer: ");
        currentEntry = scan.nextInt();

        if (currentEntry <= 0 || currentEntry <= previousEntry) {

            if ((currentEntry - previousEntry) > 5)
                // difference of more than 5
                numberOfBigSteps++;

        }

        if ((currentEntry - previousEntry) <= 5) {
            numberOfSmallSteps++;

            if (currentEntry == previousEntry) {
                numberOfSmallSteps++;

            }
        }
        // output
        System.out.println("Big steps: " + numberOfBigSteps);
        System.out.println("Small steps: " + numberOfSmallSteps);
        System.out.println("Ending value: " + currentEntry);
    }

}

// 目前它根本不工作,我不能輸入任何數字

這是因為您將“currentEntry”聲明並初始化為零,然后開始循環:

while (currentEntry > 0) {

所以代碼根本不會進入循環,因為 0 永遠不會大於 0。

在你得到一個 integer 之后,你的邏輯就倒退了:

    if (currentEntry <= 0 || currentEntry <= previousEntry) {
        if ((currentEntry - previousEntry) > 5) // difference of more than 5
            numberOfBigSteps++;
    }

您是說,如果當前數字為負數或小於或等於前一個數字,您應該計算步長值,而實際上這是一個結束條件,您只需停止循環並顯示輸出即可。

要存儲您當前未執行的先前數字,您只需將此行放在循環的底部:

previousEntry = currentEntry;

你實際上非常接近正確答案。

這是我的版本:

// create variables
int numberOfBigSteps = 0;
int numberOfSmallSteps = 0;
int currentEntry = -1;
int previousEntry = -1;
boolean keepGettingNumbers = true;    
Scanner scan = new Scanner(System.in);

while (keepGettingNumbers) {
  System.out.print("Enter a positive integer: ");
  currentEntry = scan.nextInt();

  keepGettingNumbers = (currentEntry>0 && currentEntry>previousEntry);
  if (keepGettingNumbers) {
    if (previousEntry != -1) {
      int step = currentEntry - previousEntry;
      if (step>5) {
        numberOfBigSteps++;
      }
      else {
        numberOfSmallSteps++;  
      }
    }
    previousEntry = currentEntry;
  }        
}

// output
System.out.println("Big steps: " + numberOfBigSteps);
System.out.println("Small steps: " + numberOfSmallSteps);
System.out.println("Ending value: " + currentEntry);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM