这是用于查找给定间隔之间的军械风暴编号的代码。但是,当我将我的方法放入主方法的循环中以便它可以在给定间隔之间运行时,则循环仅运行一次,并且不更改传递给方法的值。为什么会这样呢?在不同语言下处理这些条件是否有所不同?
import java.util.Scanner;
class ArmstormNumbers {
int mod, div, count = 0, rev = 0, pow = 1, sum = 0;
int checkArm(int num) {
while(num!=0) {
mod = num%10;
div = num/10;
num = div;
count++;
rev = (rev*10) + mod;
}
while(rev!=0) {
mod = rev%10;
div = rev/10;
rev = div;
int temp = mod;
for(pow = 1; pow < count; pow++) {
mod = mod * temp;
}
sum=sum+(mod);
}
return sum;
}
}
class HelloWorld {
public static void main(String args[]) {
int num, arms, inp, fp, asm, num2;
Scanner input = new Scanner(System.in);
ArmstormNumbers object = new ArmstormNumbers();
System.out.println("This program will find armstorm numbers between two intervels");
System.out.println("Input Initial point ");
num = input.nextInt();
System.out.println("Input Final Point");
num2 = input.nextInt();
int temp = num;
for(num = temp; num <= num2; num++) {
asm = object.checkArm(num);
if(asm == num) {
System.out.println(num);
}
}
}
}
答案 0 :(得分:1)
移动变量声明,使它们成为方法局部变量,它们在每次执行方法时都会初始化,而不是在实例化对象时仅初始化一次。
即更改
int mod,div,count=0,rev=0,pow=1,sum=0;
int CheckArm(int num)
{
到
int CheckArm(int num)
{
int mod,div,count=0,rev=0,pow=1,sum=0;
您遇到的问题以及您要解决的方法可能是依赖于开始时的总和为0,但不确定。