Java 完全数
我在java中尝试了这个程序,以获得多达1000个整数的有界常量输入。未获得预期的输出:(Java 完全数,java,list,arraylist,numbers,perfect-numbers,Java,List,Arraylist,Numbers,Perfect Numbers,我在java中尝试了这个程序,以获得多达1000个整数的有界常量输入。未获得预期的输出:( package.perfect.number; 导入java.util.ArrayList; 公共类数字{ 公共静态void main(字符串[]args){ long num=1000;int sum=0; ArrayList perfectList=新的ArrayList(); ArrayList factorList=新的ArrayList(); for(int i=1;i我认为你的内部for循环应
package.perfect.number;
导入java.util.ArrayList;
公共类数字{
公共静态void main(字符串[]args){
long num=1000;int sum=0;
ArrayList perfectList=新的ArrayList();
ArrayList factorList=新的ArrayList();
for(int i=1;i我认为你的内部for循环应该是这样的:
for(int j=1; j<=i/2; j++)
{
if(i%j==0)
{
factorList.add(j);
}
}
for(int h=0; h<factorList.size(); h++)
sum=sum+factorList.get(h);
if(sum==i)
perfectList.add(i);
sum=0;
for(int j=1;j我认为你的内部for循环应该是这样的:
for(int j=1; j<=i/2; j++)
{
if(i%j==0)
{
factorList.add(j);
}
}
for(int h=0; h<factorList.size(); h++)
sum=sum+factorList.get(h);
if(sum==i)
perfectList.add(i);
sum=0;
for(int j=1;j您的代码有多个问题:
工厂列表未清除
例如,6是一个整数=1+2+3,但inter for循环在2处停止。(j您的代码有多个问题:
工厂列表未清除
例如,6是一个完美的数字=1+2+3,但inter for循环停止在2。(j通过谷歌找到答案,根据您的要求进行少量更新。)
您是否期望低于输出
最高达1000的完美数字是:
0
6.
28
496
public类{
公共静态布尔值isPerfectNumber(整数){
内部温度=0;
对于(inti=1;i通过谷歌找到答案,根据您的要求进行少量更新
您是否期望低于输出
最高达1000的完美数字是:
0
6.
28
496
public类{
公共静态布尔值isPerfectNumber(整数){
内部温度=0;
对于(int i=1;i
将总和计算代码从第二个循环移动到第一个循环
求和计算后清除因子列表
将总和计算代码从第二个循环移动到第一个循环
求和计算后清除因子列表
你的内循环有一个明显的问题(即for
循环,以j
作为索引变量):你的结束测试是j你的内循环有一个明显的问题(即for
循环,以j
作为索引变量):你的结束测试是j/*
@作者12CSE54
@日期:2014年10月28日
*/
导入java.util.*;
公共类完美{
扫描仪s=新的扫描仪(System.in);
公共作废检查(){
System.out.println(“输入数字\n”);
int p=sc.nextInt();
内部温度=0;
对于(int i=1;i/*
@作者12CSE54
@日期:2014年10月28日
*/
导入java.util.*;
公共类完美{
扫描仪s=新的扫描仪(System.in);
公共作废检查(){
System.out.println(“输入数字\n”);
int p=sc.nextInt();
内部温度=0;
对于(int i=1;i),您得到的输出是什么?您希望得到什么?可能是完美的数字?我已经编辑了您的类,使其看起来像普通代码,请在编写时记住这一点code@kocko-我得到的是一个空白输出,只有“a000之前的Perfec数字是:”你得到了什么样的输出?你期望什么?可能是完美的数字?我已经编辑了你的类,所以它看起来像一个普通的代码,请在编写时记住这一点code@kocko-我得到的是一个空白输出,只有“直到a000的Perfec数字是:”8128大于1000:)谢谢,更新了代码。Typeo,而不是i8128大于1000:)谢谢,更新了代码。Typeo,而不是iperfect ans表示完美数字完美ans表示完美数字感谢此解释(y)
import java.util.ArrayList;
public class PerfectNumbers {
public static void main(String[] args) {
long num = 1000;
int sum = 0;
ArrayList<Integer> perfectList = new ArrayList<>();
ArrayList<Integer> factorList = new ArrayList<>();
for (int i = 6; i < num; i++) {
factorList.clear();
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) {
factorList.add(j);
}
}
sum = 0;
for (int h = 0; h < factorList.size(); h++) {
sum = sum + factorList.get(h);
}
if (sum == i) {
perfectList.add(i);
}
}
System.out.println("The Perfect numbers upto 1000 are : ");
for (Integer item : perfectList) {
System.out.print(item + "/t");
}
}
}
public class PerfectNumbers {
public static boolean isPerfectNumber(int number){
int temp = 0;
for(int i=1;i<=number/2;i++){
if(number%i == 0){
temp += i;
}
}
if(temp == number){
return true;
} else {
return false;
}
}
public static void main(String[] args) {
System.out.println("The Perfect numbers upto 1000 are :");
for (int i=0;i<= 1000; i++){
if(PerfectNumbers.isPerfectNumber(i)){
System.out.println(i);
}
}
}
}
/*
@ Author 12CSE54
@ Date 28.10.14
*/
import java.util.*;
public class perfect {
Scanner s = new Scanner(System.in);
public void check() {
System.out.println("Enter the number\n");
int p = sc.nextInt();
int temp = 0;
for(int i = 1; i <= p / 2; ++i) {
if (p % i == 0)
temp += i;
}
if (temp == p)
System.out.println("It is a perfect number");
else
System.out.println("It is not a perfect number");
}
public static void main(String args[]) {
perfect p1 = new perfect();
p1.check();
}
}