如何在java中使用用户输入进行循环,并使变量成为最后一个输入和前一个输入



我正在尝试创建一个循环,接受用户输入,直到输入一个小于或等于零的数字或输入一个等于前一个数字的数字。我很难弄清楚如何将用户以前的输入编码为变量。

方向

编写一个类名为Problem2的程序,该程序具有方法

在main方法中,提示用户输入正整数,直到用户输入小于或等于0的值,或者当输入的数字小于或等于输入的数字时先前

阶跃是输入的整数与在该整数之前输入的值。计算大的数量步数(相差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。如果有更多的数字,那么最后一个输入和前一个输入将继续变化,直到循环结束。

如果数字不断变化,直到循环结束,我如何创建一个等于用户之前输入的数字的变量?

我对此的理解是正确的还是错误的?

到目前为止我的代码:

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。

在你得到一个整数后,你的逻辑是向后的:

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);

相关内容

最新更新