[英]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.