Java 如何使用用户输入而不是无限循环来计算While循环?
这是为了帮助我完成家庭作业,但网站不允许我这样标记。仅供参考:除了while类型之外,我还没有学习循环。我需要一些关于Java的while循环计数程序的帮助。我是编程新手,所以我会尽力解释这一点。程序将要求用户输入起始编号、结束编号和增量。我希望它能够执行4种类型的场景。前三种类型工作正常,但最后一种情况无限循环。如何更改代码以满足所有4种情况?任何解释或帮助都将不胜感激。下面是场景,之后是我的代码Java 如何使用用户输入而不是无限循环来计算While循环?,java,while-loop,Java,While Loop,这是为了帮助我完成家庭作业,但网站不允许我这样标记。仅供参考:除了while类型之外,我还没有学习循环。我需要一些关于Java的while循环计数程序的帮助。我是编程新手,所以我会尽力解释这一点。程序将要求用户输入起始编号、结束编号和增量。我希望它能够执行4种类型的场景。前三种类型工作正常,但最后一种情况无限循环。如何更改代码以满足所有4种情况?任何解释或帮助都将不胜感激。下面是场景,之后是我的代码 起始编号结束编号,开始编号按递增顺序倒计时至结束编号并停止: 你想从哪里开始计数? 44 你要我
public static void main(String[] args) {
int counter, limit, inc;
Scanner input = new Scanner(System.in);
System.out.println("Where do you want to start counting?");
counter = input.nextInt();
System.out.println("How far do you want me to count?");
limit = input.nextInt();
System.out.println("Increment?");
inc = input.nextInt();
System.out.println("COUNTING");
System.out.println(counter);
while (counter != limit) {
if (counter < limit) {
counter = counter + inc;
System.out.println(counter);
}
else if (counter > limit) {
counter = counter - inc;
System.out.println(counter);
}
}
}
publicstaticvoidmain(字符串[]args){
国际计数器有限公司;
扫描仪输入=新扫描仪(System.in);
System.out.println(“您想从哪里开始计数?”);
计数器=input.nextInt();
System.out.println(“你想让我数到多少?”;
limit=input.nextInt();
System.out.println(“增量?”);
inc=input.nextInt();
系统输出打印项次(“计数”);
系统输出打印项次(计数器);
while(计数器!=限制){
if(计数器<极限){
计数器=计数器+有限公司;
系统输出打印项次(计数器);
}
否则如果(计数器>限制){
计数器=计数器-公司;
系统输出打印项次(计数器);
}
}
}
}你说:
while (counter != limit) {
if (counter + inc < limit) {
counter = counter;
System.out.println(counter);
} else if (counter - inc > limit) {
counter = counter;
System.out.println(counter);
}
while(计数器!=限制){
如果(计数器+inc<限制){
计数器=计数器;
系统输出打印项次(计数器);
}否则如果(计数器-inc>限制){
计数器=计数器;
系统输出打印项次(计数器);
}
如果计数器!=limit,这会告诉计算机继续运行。计数器几乎肯定永远不会==limit。想象一下:limit=43。如果你增加6,那么你开始计算的数字变成43的几率只有六分之一。(42-38+6!=43),(37+6==43)。有很多方法可以在没有计数器==limit的情况下继续计数(以打破while循环)
尝试将while循环放入if语句中:
//edited to resolve issue brought up in comments
if (counter < limit) {
while (counter < limit + inc) {
//until counter is bigger than limit, count up by inc
counter += inc;
System.out.println(counter);
}
} else if (counter > limit) {
while (counter > limit - inc) {
//until counter is smaller than limit, count down by inc
counter -= inc;
System.out.println(counter);
}
}
//编辑以解决评论中提出的问题
if(计数器<极限){
同时(计数器<限制+公司){
//在计数器大于极限值之前,按inc计数
计数器+=有限公司;
系统输出打印项次(计数器);
}
}否则如果(计数器>限制){
同时(计数器>限制-包括){
//直到计数器小于限制,由inc倒计时
柜台公司;
系统输出打印项次(计数器);
}
}
不要检查不等式计数器!=limit
,而是做两个例子。如果,你似乎已经理解了。有一个例子,你可以检查计数器=limit
(倒计时).这对你来说应该足够了,但如果你真的需要,我会提供代码。我鼓励你在查看之前自己再试一次
//(...)
System.out.println(counter);
boolean countingUp = counter <= limit; //if this variable is true, we are counting up
if (countingUp == true) {
while(counter <= limit) {
counter = counter + inc;
System.out.println(counter);
}
} else {
while(counter >= limit) {
counter = counter + inc;
System.out.println(counter);
}
}
//End of program.
/(…)
系统输出打印项次(计数器);
boolean countingUp=counter如果需要,可以在while循环中使用break
while (counter != limit) {
if (counter < limit) {
if (counter + inc <= limit){
counter = counter + inc;
System.out.println(counter);
} else {
break;
}
}
else if (counter > limit) {
if (counter - inc >= limit) {
counter = counter - inc;
System.out.println(counter);
} else {
break;
}
}
}
while(计数器!=限制){
if(计数器<极限){
if(计数器+inc限制){
如果(计数器-inc>=限制){
计数器=计数器-公司;
系统输出打印项次(计数器);
}否则{
打破
}
}
}
break将停止循环并在循环后继续执行代码。谢谢,此代码肯定会停止无限循环。我现在遇到的问题是,增量没有均匀地达到极限,它的加法或减法(取决于场景)有一次超出限制。我会继续处理它,但至少它会停止。@user3404250啊,我现在看到了。当你最后一次开始while循环(问题)时,它是真的。然后它添加inc并将其变为false,但必须通过打印计数器来完成。因此,你需要执行while(counter
和while(counter>limit-inc)
这使得它两次超过了限制(假设我正确读取了您的更改),但是它帮助我找到了如何修复它。当我将第一次更改为(counter+inc=limit)时,我得到了正确的输出。谢谢你的帮助!谢谢,这确实停止了无限循环。但是,在每个场景中,它都会计算一次超过限制。我会继续使用它。尝试一些不同的方法很好。