Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 1039|回复: 11
打印 上一主题 下一主题

JAVA问题 请各位高手来看看并给与帮助

[复制链接]

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

跳转到指定楼层
1#
发表于 2014-10-6 02:09 AM |只看该作者 |正序浏览
这是assignment来的
我要写一个可以算perfect number, excessive number和defective number的program
可是遇到一个问题
就是我list出所有factors以后
还要把factors加起来(sum of divisors/factors)
这个地方,我不会写。
各位高手教教我好吗 谢谢
以下是我的coding....

import java.util.*;
public class Numbers {

        public static void main(String[]args){
        System.out.println("Enter any number");
        Scanner input =new Scanner(System.in);
        int num = input.nextInt();
        int perfectNum=0;
        int x;
        
        while (true)
        {
            try
            {
                    if( num >= 6 && num<= 1000)
                {
                        System.out.println("Factors are:");
                    for(x = 1; x < num; x++)
                    {
                            if(num % x == 0)
                            {
                                    perfectNum = perfectNum + x;
                                    System.out.println(x);
                            }
                    }
                   if(perfectNum==num)
                   {
                        System.out.println("This number is a perfect number.");
                   }
                   if(perfectNum>num)
                   {
                                   System.out.println("This number is an excessive number.");
                   }
                   if(perfectNum<num)
                   {
                                   System.out.println("This number is a defective number.");
                   }
                }
               else
               {
                       System.out.println("It is not a valid number. Please reenter a number that is in the range of 6 to 1000.");
               }
                num = input.nextInt();
   
            }
            catch (InputMismatchException e)
            {
               System.out.println("You did not enter an integer.");
               input.nextLine();
            }
        }
      }
}




收藏收藏0

6

主题

1

好友

1943

积分

白银长老

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

12#
发表于 2014-10-9 10:13 PM |只看该作者
jayte2168 发表于 2014-10-9 01:36 PM
Now teacher adding some trouble to me zzzzz

She want me to prompt number of values to test wh ...


只要增加几个 looping 就可以了,然后用一个list来记录input的number,我举个例子:
  1. Scanner sc = new Scanner(System.in);
  2. S.O.P("How many number want to test? ");
  3. int size = sc.nextInt();

  4. List<Integer> numbers = new ArrayList(0);
  5. for (int i=0;i<size;i++) {
  6.   S.O.P("Number " + (i+1) + "?");
  7.   int input = sc.nextInt();
  8.   numbers.add(input);
  9. }

  10. for (Integer num : numbers) {
  11.   printResult(sumOfFactors(getFactors(num)), num);
  12. }
复制代码
这个是直接打的,没测试,逻辑大概就是这样而已。
PS: S.O.P = System.out.println


回复

使用道具 举报

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

11#
发表于 2014-10-9 01:36 PM |只看该作者
本帖最后由 jayte2168 于 2014-10-9 02:32 PM 编辑
htuomrev 发表于 2014-10-8 11:09 AM
为了方便和意义完整,factor我是包括input本身,如果sum of factor 不需要 input 本身,那:再减掉 input 的 ...


Now teacher adding some trouble to me zzzzz

She want me to prompt number of values to test which means i hv to add loop.

For examples,
Please write the numbers of value to test.
4
Please write the 1st number to test.
60
Please write the 2nd number to test.
80
Please write the 3rd number to test.
100
Please write the 4st number to test.
500


回复

使用道具 举报

6

主题

1

好友

1943

积分

白银长老

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

10#
发表于 2014-10-8 11:09 AM |只看该作者
为了方便和意义完整,factor我是包括input本身,如果sum of factor 不需要 input 本身,那:
  1. int sum = sumOfFactors(factors) - input;
复制代码
再减掉 input 的 value 就可以了。


回复

使用道具 举报

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

9#
发表于 2014-10-8 10:47 AM |只看该作者
jayte2168 发表于 2014-10-7 05:41 PM
array和list剛學不久 還不是了解用法 對不起啊 哈哈哈 謝謝你 我試試自己再改一改 有問題再上來報到

刚才的问题解决了
可是sum of factors不能包括那个input的number
我想了半天还是不懂怎样改 请教一下好吗


回复

使用道具 举报

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

8#
发表于 2014-10-8 10:12 AM |只看该作者
htuomrev 发表于 2014-10-7 12:07 PM
你自己print out一下factors总数不是好了嘛 ==添加一个新的method:然后在 getFactors 里的:之前添加成为 ...

那个print factors总数的
int sum = sumOfFactors(factors);
System.out.printf("Sum of factors: %d", sum);

我paste进去了出现以下error:
Exception in thread "main" java.lang.StackOverflowError

是我放的位置错误还是什么呢?


回复

使用道具 举报

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

7#
发表于 2014-10-7 05:41 PM |只看该作者
array和list剛學不久 還不是了解用法 對不起啊 哈哈哈 謝謝你 我試試自己再改一改 有問題再上來報到


回复

使用道具 举报

6

主题

1

好友

1943

积分

白银长老

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

6#
发表于 2014-10-7 12:07 PM |只看该作者
jayte2168 发表于 2014-10-7 09:49 AM
I understand ur code d, but then the sum of factors seems not coming out.
And how do I arrange th ...

你自己print out一下factors总数不是好了嘛 ==
  1. int sum = sumOfFactors(factors);
  2. System.out.printf("Sum of factors: %d", sum);
复制代码
添加一个新的method:
  1.         private static List<Integer> sortFactors(List<Integer> factors) {
  2.                 Comparator c = new Comparator() {
  3.                         public int compare(Object arg0, Object arg1) {
  4.                                 return ((Integer)arg0).compareTo((Integer)arg1);
  5.                         }
  6.                 };
  7.                 Collections.sort(factors, c);
  8.                 return factors;
  9.         }
复制代码
然后在 getFactors 里的:
  1.                 return factors;
复制代码
之前添加成为:
  1.                 factors = sortFactors(factors);
  2.                 return factors;
复制代码
其实你的这两个要求非常的简单,是编程基础必须自己理解的一种,加油吧,你可以先研究一下 List 的用法,java provide 这个 class 就是为了方便。


回复

使用道具 举报

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

5#
发表于 2014-10-7 09:49 AM |只看该作者
htuomrev 发表于 2014-10-6 03:15 AM
你必须用一个array或者list来记录factor,我按照你的题目写了一个example。
我把各个步骤都分开,分成了几 ...

I understand ur code d, but then the sum of factors seems not coming out.
And how do I arrange the factors in ascending order?
sorry i'm using school pc so i can't type chinese....


回复

使用道具 举报

9

主题

11

好友

303

积分

超级会员

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

4#
发表于 2014-10-7 09:29 AM |只看该作者
htuomrev 发表于 2014-10-6 03:15 AM
你必须用一个array或者list来记录factor,我按照你的题目写了一个example。
我把各个步骤都分开,分成了几 ...

我run了你的code
可是如果我不要一开始就把所有numbers和type of numbers都list出来呢?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-11-18 06:32 PM , Processed in 0.116457 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部