我正在尝试编写一个代码,用于打印2个数字之间的范围,从最小到最大。 例如: 比方说我输入两个数字--3和6 我需要它打印出来:3 4 5 6 现在我的问题是如果我输入两个数字,如6和3 比我第一次迭代有问题,因为当我输入3和6时它完成循环并转到下一个...我不想要那个,我希望他在第一次迭代为真时结束程序。
代码:
import java.util.Scanner;
public class ForClass
{
public static void main(String[]args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter two numbers");
int num1, num2;
num1 = scan.nextInt();
num2 = scan.nextInt();
for(;num1<=num2;num1++){
System.out.print(num1);
}
for(;num2<=num1;num2++){
System.out.print(num2);
}
}
}
试验: 3和6 转到第一个for循环,运行它然后转到第二个for 然后打印 3 4 5 6 6 7 这是错的我希望它打印 3 4 5 6 并结束该计划。
***我应该指出我必须使用for循环。
答案 0 :(得分:3)
如果它是真的,你可以使用布尔值并只执行第二个for循环...
boolean executed = false;
for ( /* code here */ ) {
executed = true;
/* code here */
}
if (!executed) {
for ( /* code here */ ) {
/* code here */
}
}
但是,在您的情况下,更好的方法是确定哪个数字更小:
int smaller, bigger;
if (num1 > num2) {
smaller = num2;
bigger = num1;
} else { /* may want to do something different if they are equal */
bigger = num2;
smaller = num1;
}
然后你只需要一个循环,你只需要使用bigger
和smaller
。
答案 1 :(得分:1)
您的for循环同时执行。他们都在工作。您的结果是3,4,5,6
(现在num1 = 7,不是&lt; = 6)和6,7
所以选择正确循环的if语句应该可以解决您的问题。像
if (num1 < num2) {
//loop 1
}
else //loop 2
答案 2 :(得分:1)
试试这样; 有一个for循环;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter two numbers");
int num1, num2;
num1 = scan.nextInt();
num2 = scan.nextInt();
int start, end;
if (num1 > num2) {
start = num2;
end = num1;
} else {
start = num1;
end = num2;
}
for (int i = start; i <= end; i++) {
System.out.print(i);
}
}
答案 3 :(得分:1)
在你的第一个for循环之前输入这段代码。
if(num2 < num1){
int temp = num1;
num1 = num2;
num2 = temp;
}
然后擦除你的第二个for循环。这种只用一个临时变量交换两个变量的方法对学习很有用。
答案 4 :(得分:-1)
任何时候你想要打破循环,break;
都会帮助你!
for(int i = 0; i < 20; i++) {
if(i == 10) break;
}
一旦我击中10,那就会打破循环。