2017-10-16 81 views
0

编写接受来自用户的开始号码和结束号码的程序。对于该范围内的每个数字,它将打印均匀分割的所有数字(除此之外还有0个余数)。用于循环打印的均匀分割数给定范围

我一直只能得到范围内的第一个数字,但它不会打印正在进行的和最终的数字。示例输入只是:85 89.输出应该是这样的:

85是由1 5 17 85

86整除是由1 2 43 86

87整除是整除通过1 3 29 87

88是由1 2 4 11 22 44 88

89整除由1 89

import java.util.*; 
public class NumberRange { 
public static void main(String args[]) { 
    Scanner in = new Scanner(System.in); 
    int num1; 
    int num2; 
    num1 = in.nextInt(); 
    num2 = in.nextInt(); 
    System.out.print(num1 + " is evenly divisible by "); 
    for(num2 = 1; num2 <= num1; num2 ++) 
     { 
     if (num1 % num2 == 0) 
     { 
      System.out.print(num2 + " "); 
     } 
     } 
} 
} 
整除
+0

您的输入是什么? –

回答

0

您的意见显示此不变:num1 <= num2。因此,而不是与for (num2 = 1; num2 <= num1; num2 ++)丢弃num2输入,你想要的外环:

for (int n = num1; n <= num2; n++) 

它要么调用一个辅助函数(包含循环),或至少要求从1运行嵌套循环.. n ,测试剩下的东西。如果将内部循环放入适当命名的辅助函数中,您的老师会留下深刻的印象。提示:您需要为该内部循环声明另一个变量。

0
/* package whatever; // don't place package name! */ 

import java.util.*; 
import java.lang.*; 
import java.io.*; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     Scanner in = new Scanner(System.in); 
     int num1; 
     int num2; 
     num1 = in.nextInt(); 
     num2 = in.nextInt(); 

     for(int i = num1; i <= num2; i++) 
     { 
      System.out.print(i + " is evenly divisible by "); 
      for(int j = 1; j <= i; j++) 
      { 
       if (i % j == 0) 
       { 
         System.out.print(j + " "); 
       } 
      } 
      System.out.println(); 
     } 
    } 
}