package com.baidu;
public class HelloWorld {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=0,b=0,c=0,d=0,sum=0;
for(int i=0;i<100;i++){
for(int j=1000;j<10000;j++){
a=j-1000;
b=(j-a*1000)/100;
c=(j-a*1000-b*100)/10;
d=j-a*1000-b*100-c*10;
sum=a*1000+b*100+c*10+d;
if(a==b&&c==d&&sum==i*i){
System.out.println("这四位数是:"+sum);
}
}
}
}
}
写程序出错问问题一定要说清楚你的目的是什么,需要得到什么结果,达到什么目的。
根据你的程序猜测你的目的是找出一个四位数,四位数的前两位相等,后两位数相等。并且这个四位数是一个两位数的平方。
如果你的程序确实是要达到这样一个目的。那么,说说你的问题:
1-你采用双重for循环没错,但是没必要把对1000到10000的数循环也放进双重for里面,这样把从1000到10000的每个数的运算实现了一百遍,而事实上一遍就可以了。
2-sum=a*1000+b*100+c*10+d; 这一步是得到了操作的这个四位数,原数据。你这个sum数据不就是循环里面的 j 吗?
把你的程序优化了一下:
public class Test{
public static void main(String[] args) {
for (int i = 1000; i < 10000; i++) {
int a = i / 1000;
int b = (i - 1000 * a) / 100;
int c = (i - 1000 * a - 100 * b) / 10;
int d = i % 10;
for (int j = 0; j < 100; j++) {
if (a == b && c == d && i == j * j) {
System.out.println(i);
System.out.println(j);
}
}
}
}
}
得到结果 7744 而且这个二位数是88
这个for循环写错了吧:for(int j=1000;j<10000;j++) 根本就没有走进去,所以也就没有打印啦
a=j-1000
这里应该是除以吧,还有就是可以用%运算
int a = 9874;
// 千位
int b = a / 1000;
// 百位
int c = (a % 1000) / 100;
// 十位
int d = (a % 100) / 10;
//个位
int e = a % 10;
System.out.println(b + "--" + c + "--" + d + "--" + e);