检查 2 个整数之间的数字
Check numbers in between 2 integers
我正在为即将到来的 Java 测试做复习,我卡在了一部分,无法解决。
问:取2个整数,从Int A到Int B,如果X能被6或5整除但不能同时被5整除,则显示X,每10个数字换行。
下面是我当前的代码:
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int numOne = sc.nextInt();
int numTwo = sc.nextInt();
int line = 1;
while (numTwo > numOne) {
if (line%11==0){
System.out.println("");
}
if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
System.out.print(numOne + " ");
line++;
}
if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
System.out.print(numOne + " ");
line++;
}
}
numOne++;
}
您的代码给出了一个无限循环,因为 numOne
在 while 循环之外 递增。把它移到里面,它似乎可以正常工作。
将代码更改为
while (numTwo > numOne) {
if (line%11==0){
System.out.println("");
}
if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
System.out.print(numOne + " ");
line++;
}
if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
System.out.print(numOne + " ");
line++;
}
numOne++;
}
将 numOne++;
移动到循环内。你没有改变循环内的任何变量所以你会得到一个无限循环
你的增量在 while 循环之外。您需要在循环体的末尾递增 numOne。
目前你有一个无限循环。由于 numOne 永远不会改变,numTwo 总是大于 numOne。
也用Exclusive OR ^
,这道题会简单很多:
http://www.programmerinterview.com/index.php/java-questions/xor-in-java/
while (numTwo > numOne) {
if (line%11==0){
System.out.println("");
}
if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
System.out.print(numOne + " ");
line++;
}
if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
System.out.print(numOne + " ");
line++;
}
numOne++;
}
你也可以这样写:
if ((numOne % 5 == 0 || numOne % 6 == 0) && numOne % 30 != 0)
我正在为即将到来的 Java 测试做复习,我卡在了一部分,无法解决。
问:取2个整数,从Int A到Int B,如果X能被6或5整除但不能同时被5整除,则显示X,每10个数字换行。
下面是我当前的代码:
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int numOne = sc.nextInt();
int numTwo = sc.nextInt();
int line = 1;
while (numTwo > numOne) {
if (line%11==0){
System.out.println("");
}
if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
System.out.print(numOne + " ");
line++;
}
if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
System.out.print(numOne + " ");
line++;
}
}
numOne++;
}
您的代码给出了一个无限循环,因为 numOne
在 while 循环之外 递增。把它移到里面,它似乎可以正常工作。
将代码更改为
while (numTwo > numOne) {
if (line%11==0){
System.out.println("");
}
if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
System.out.print(numOne + " ");
line++;
}
if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
System.out.print(numOne + " ");
line++;
}
numOne++;
}
将 numOne++;
移动到循环内。你没有改变循环内的任何变量所以你会得到一个无限循环
你的增量在 while 循环之外。您需要在循环体的末尾递增 numOne。
目前你有一个无限循环。由于 numOne 永远不会改变,numTwo 总是大于 numOne。
也用Exclusive OR ^
,这道题会简单很多:
http://www.programmerinterview.com/index.php/java-questions/xor-in-java/
while (numTwo > numOne) {
if (line%11==0){
System.out.println("");
}
if ((numOne % 5 == 0) && (numOne % 6 != 0)) {
System.out.print(numOne + " ");
line++;
}
if ((numOne % 6 == 0) && (numOne % 5 != 0)) {
System.out.print(numOne + " ");
line++;
}
numOne++;
}
你也可以这样写:
if ((numOne % 5 == 0 || numOne % 6 == 0) && numOne % 30 != 0)