用Java编程列出所有四位数字,这些数字的总和为7. ie.list 0000到9999之间的数字,得到四位数的总和为7.
例如:7171是一个四位数字,四位数字的总和为7 + 1 + 7 + 1 = 16然后1 + 6 = 7.因此应列出这类数字。
我写了一段代码,但它没有工作。代码如下:
public class Add
{
double i,s,n=0;
void method()
{
for(i=0000; i<=9999; i++)
{
for(n=i;n>0;n/=10)
{
s=s+(n%10);
}
while(s>9)
{
for(n=s;n>0;n/=10)
{
s=s+(n%10);
}
}
if(s==7)
{
System.out.println("i");
}
}
}
public static void main(String[] args)
{
Add ob=new Add();
ob.method();
}
}
答案 0 :(得分:8)
这是你想要的程序:
public class SumDigits {
public static void main(String[] args) {
for(int i=7; i<=9999; i+=9)
System.out.printf("%04d\n", i);
}
}
数字的总和为你提供了除数的除法者。所以从7开始,连续加9,你就得到所有这些数字。
答案 1 :(得分:1)
我知道这有点老了,但是可以帮助其他人。
public class Add {
int sum(String val)
{
int num=0,temp=0;
int count=val.length();
temp=count;
for(int i=0;i<count;i++)
{
temp--;
char k=val.charAt(i);
num += Character.getNumericValue(k);
int p=String.valueOf(num).length();
if(p>1&&temp==0)
{
count=p;
i=-1;
val=String.valueOf(num);
num=0;
}
}
return num;
}
public static void main(String []args)
{
Add a=new Add();
for(int k=0;k<9999;k++)
{
if(a.sum(String.valueOf(k))==7)
System.out.println("Numbers are"+k);
}
}
}
答案 2 :(得分:0)
希望这会对你有所帮助。
对每个数字求和,并且总和大于10,再次求和。
public class Add {
public void calculate(int value) {
for (int index = 1; index <= value; index++) {
int i = index;
int sum=0;
int summation = 0;
sum = computeDigits(i, sum);
summation = computeDigits(sum, summation);
if (summation == 7) {
System.out.println(index);
}
}
}
private int computeDigits(int i, int sum) {
while(i>9) {
sum += i%10;
i = i/10;
}
sum += i;
return sum;
}
public static void main(String[] args) {
Add ob = new Add();
ob.calculate(1000);
}
}