2015-10-15 76 views
0

我是java中的新成员,我得到了阿姆斯特朗数字的分配。 我已经创造了新的类ArmstrongNumber.java,我从本网站初始化方法:http://www.programmingsimplified.com/java/source-code/java-program-armstrong-numberJAVA如何返回间隔[100; 999]

现在,在其中的主要方法我创造了另一个方法的类在那里我打电话ArmstrongNumber类,现在我要回到阿姆斯特朗数间隔从[100至999]。

有我现在卡在哪里。

public static void armtrongNumbs() 
    { 
     ArmstrongNumber returnObj = new ArmstrongNumber(); // here i m calling class. 

     int start = 100; 
     int end = 999; 

     for(int i = start; i<= end; i++) 
     { 
      number = i + number; 
      returnObj.Armstrong(number); 
     } 
     //returnObj.Armstrong(); 
    } 

我的循环怎么会只返回阿姆斯特朗数?

编辑:ArmstrongNumber类

class ArmstrongNumber 
{ 
    public void Armstrong(int number) 
    { 
     int n, sum = 0, temp, remainder, digits = 0; 
     Scanner in = new Scanner(System.in); 
     System.out.println("Input a number to check if it is an Armstrong number");  
     n = in.nextInt();  
     temp = n;  
     // Count number of digits 
     while (temp != 0) { 
     digits++; 
     temp = temp/10; 
     } 

     temp = n; 

     while (temp != 0) { 
     remainder = temp%10; 
     sum = sum + power(remainder, digits); 
     temp = temp/10; 
     } 

     if (n == sum) 
     System.out.println(n + " is an Armstrong number."); 
     else 
     System.out.println(n + " is not an Armstrong number.");   
    } 

    static int power(int n, int r) { 
     int c, p = 1; 

     for (c = 1; c <= r; c++) 
     p = p*n; 

     return p; 
    } 
} 
+0

什么returnObj? –

+0

@ParaSara这是新创建的对象,我打电话给ArmstrongNumber类,我初始化armostring算法。 – BinaryTie

+0

ok,returnObj.Armstrong(number)返回true或false,对不对? –

回答

0

根据您的要求,您需要的ArmstrongNumber.java逻辑和模具以适合按您的要求。

你只需要使用下面的代码,并可以不用担心使用ArmstrongNumber.java

package hello; 

public class Abc { 
public static void main(String[] args) { 
    int n, sum, temp, remainder, digits; 

    int start = 100; 
    int end = 999; 

    for (int i = start; i <= end; i++) { 

     sum = 0; 
     digits = 0; 

     temp = i; 

     // Count number of digits 

     while (temp != 0) { 
      digits++; 
      temp = temp/10; 
     } 

     temp = i; 

     while (temp != 0) { 
      remainder = temp % 10; 
      sum = sum + power(remainder, digits); 
      temp = temp/10; 
     } 

     if (i == sum) 
      System.out.println(i + " is an Armstrong number."); 

    } 
} 

static int power(int n, int r) { 
    int c, p = 1; 

    for (c = 1; c <= r; c++) 
     p = p * n; 

    return p; 
} 

} 

在这里你可以看到,总和和数字如何初始化为零的每一个数字,然后逻辑的其余部分相同。您可以验证153,370,371,407是否打印为阿姆斯壮数字。

希望这有助于

0

尝试像

public int[] Armstrong(int start ,int end){ 
int a[],i=0; 
for(int i = start; i<= end; i++) 
{ 
     number = i + number; 

     int n, sum = 0, temp, remainder, digits = 0; 
     Scanner in = new Scanner(System.in); 
     System.out.println("Input a number to check if it is an Armstrong number");  
     n = in.nextInt();  
     temp = n;  
     // Count number of digits 
     while (temp != 0) { 
     digits++; 
     temp = temp/10; 
     } 

     temp = n; 

     while (temp != 0) { 
     remainder = temp%10; 
     sum = sum + power(remainder, digits); 
     temp = temp/10; 
     } 

     if (n == sum) 
     a[i++]=n; 
     else 
     System.out.println(n + " is not an Armstrong number."); 
} 
return a;  
    } 
static int power(int n, int r) { 
    int c, p = 1; 

    for (c = 1; c <= r; c++) 
     p = p * n; 

    return p; 
} 

}