黑马程序员技术交流社区

标题: 求帮忙改通过 [打印本页]

作者: 王靖远    时间: 2013-5-25 01:34
标题: 求帮忙改通过
本帖最后由 王靖远 于 2013-5-25 11:43 编辑
  1. import java.util.*;
  2. class ZhuanFen1
  3. {
  4.         public static void sop(Object obj)
  5.         {
  6.                 System.out.print(obj);               
  7.         }

  8.         public static void qiuGen()
  9.         {
  10.                 double x = -100;
  11.                 while(x<=100)
  12.                 {
  13.                         double a = 1;
  14.                         double b = -5;
  15.                         double c = -4;
  16.                         double d = 20;
  17.                         
  18.                         double db1 = Math.pow(x,1);
  19.                         double db2 = Math.pow(x,2);
  20.                         double db3 = Math.pow(x,3);
  21.                         long y = 0;
  22.                         ArrayList al = new ArrayList();
  23.                         if(((int)(a*db3+b*db2+c*db1+d))==0)
  24.                                 //sop((Math.round(x)+","));//我这里可以打印出来Math.round(x),但是没法把它添加 到al这个集合里。
  25.                                                                                 //求解决方法。需求:把这些Math.round(x)加入到al集合里,并且打印。
  26.                                 /*我这样写为什么不好使?
  27.                                 y = Math.round(x);        
  28.                                 String s = String.valueOf(y);
  29.                                 al.add(s);
  30.                                 
  31.                                 Iterator it = al.iterator();
  32.                                 while(it.hasNext())
  33.                                 {
  34.                                           sop(it.next());
  35.                                 }
  36.                                 */
  37.                         
  38.                         x+=0.01;//我这里改x+=1;就能通过不知道为什么?
  39.                 }
  40.                
  41.         }
  42.         
  43.         public static void main(String[] args)
  44.         {
  45.                 qiuGen();
  46.         }
  47. }
复制代码

作者: 神之梦    时间: 2013-5-25 01:49
印象中楼主一直比我厉害,俺看不懂,顶几下好了{:soso_e113:}
作者: 王靖远    时间: 2013-5-25 02:19
神之梦 发表于 2013-5-25 01:49
印象中楼主一直比我厉害,俺看不懂,顶几下好了

嘿嘿,谦虚了吧。这是本周有奖回答题目的代码。有个地方不知道怎么处理了。
作者: 史政法    时间: 2013-5-25 05:31
测试了一下,不知道你的if判读的是什么,连个大括号都没,,,,,,但是你的If条件也没满足,也就是是假的,再加上大括号,修改下if条件就可以了
作者: 花开花落总相似    时间: 2013-5-25 07:48
import java.util.*;
class ZhuanFen2
{
        public static void sop(Object obj)
        {
                System.out.print(obj);               
        }

        public static void qiuGen()
        {
                double x = -100;
                ArrayList al = new ArrayList();
                while(x<=100)
                {
                        double a = 1;
                        double b = -5;
                        double c = -4;
                        double d = 20;
                        
                        double db1 = Math.pow(x,1);
                        double db2 = Math.pow(x,2);
                        double db3 = Math.pow(x,3);
                        long y = 0;
                       // ArrayList al = new ArrayList();  这里 集合建立的位置也不合适 总不能没循环一次就来一次集合吧
                        if(((int)(a*db3*x+b*db2+c*db1+d))==0){
                                //sop((Math.round(x)+","));// 这里我根本打印不出来结果  说明这里的条件根本没满足
                                                                              
                                y = Math.round(x);        
                                String s = String.valueOf(y);
                                al.add(s);                        
                        }        
                               /* Iterator it = al.iterator();         //这里写遍历集合的方法 我觉得也不合适
                                while(it.hasNext())
                                {
                                          sop(it.next());
                                }
                                */
                        
                        x+=0.01;
                }
                Iterator it = al.iterator();
                while(it.hasNext())
                {
                      sop(it.next());
                }
        
作者: 赵利斌    时间: 2013-5-25 08:49
  1.         import java.util.*;
  2.          
  3.         class Demo
  4.          
  5.         {
  6.          
  7.                 public static void sop(Object obj)
  8.          
  9.                 {
  10.          
  11.                         System.out.println(obj);               
  12.                 }
  13.          

  14.                 public static void qiuGen()
  15.          
  16.                 {
  17.          
  18.                         double x = -100;
  19.          
  20.                         while(x<=100)
  21.          
  22.                         {
  23. //                                double a = 1;
  24. //         
  25. //                                double b = -5;
  26. //         
  27. //                                double c = -4;
  28. //         
  29. //                                double d = 20;
  30. //         
  31. //                               
  32. //                                double db1 = Math.pow(x,1);
  33. //         
  34. //                                double db2 = Math.pow(x,2);
  35. //         
  36. //                                double db3 = Math.pow(x,3);
  37. //         
  38.                                 long y = 0;           
  39.                         
  40.                                 if(0==0)
  41.                                 {
  42.                                         y = Math.round(x);        
  43.                                         String s = String.valueOf(y);
  44.                                         ArrayList<String> al = new ArrayList<String>();
  45.                                         al.add(s);   
  46.                                         sop(al);    //这边已经可以打印出来集合了,说明已经添加成功
  47.                                         Iterator<String> it = al.iterator();         
  48.                                         while(it.hasNext())
  49.                                         {
  50.                                               sop(it.next());
  51.                                         }         
  52.                                 }     
  53.                                 x+=0.01;
  54.                         }
  55.                 }
  56.                 public static void main(String[] args)
  57.                 {
  58.                         qiuGen();
  59.                 }
  60.         }
复制代码
你的判断是没有意义的呀,那个值好像也不可能为0吧,所以我直接给你改成0==0了,然后代码如下:

作者: 张旺达    时间: 2013-5-25 09:05
史政法 发表于 2013-5-25 05:31
测试了一下,不知道你的if判读的是什么,连个大括号都没,,,,,,但是你的If条件也没满足,也就是是假的 ...

哥们你这头像。。。
作者: 陈潜    时间: 2013-5-25 10:20
这周的问题我看了下,。。。涉及到解一元三次方程
我百度了下  给出的解释是一元三次方程的解不能这样直接代入。  需要用到数学的思想,
ax^3+bx^2+cx+d=0
这个方程 你直接要一个个试数字不可能的,,因为X不一定是整数。。可能是小数。。。那你怎么穷举呢。。。。

我百度了下,花了半小时看解法。。。是在看不懂他们的公式,,,好像和线性有关系。。我就直接放弃了。。。
谁解出来了 求代码~~
作者: 王靖远    时间: 2013-5-25 10:32
陈潜 发表于 2013-5-25 10:20
这周的问题我看了下,。。。涉及到解一元三次方程
我百度了下  给出的解释是一元三次方程的解不能这样直接 ...

我这样做是可以的,因为一元三次方程的根本就是近似值。我这样穷举出来后解出来的值 都在三个根上下不超过0.001浮动,只要进行四舍五入然后去重复就可以得出了。 当然用二分法也是可以的了。
作者: 王靖远    时间: 2013-5-25 10:34
赵利斌 发表于 2013-5-25 08:49
你的判断是没有意义的呀,那个值好像也不可能为0吧,所以我直接给你改成0==0了,然后代码如下:
...

我这是判断满足方程的X啊 怎么没有意义呢?
作者: 王靖远    时间: 2013-5-25 10:35
史政法 发表于 2013-5-25 05:31
测试了一下,不知道你的if判读的是什么,连个大括号都没,,,,,,但是你的If条件也没满足,也就是是假的 ...

我的if判断的是满足方程的x. 我下面就跟一条输出语句应该不需要大括号吧。
作者: 王靖远    时间: 2013-5-25 10:36
花开花落总相似 发表于 2013-5-25 07:48
import java.util.*;
class ZhuanFen2
{

麻烦帮我改下哦
作者: 赵利斌    时间: 2013-5-25 11:58
(a*db3+b*db2+c*db1+d)==0??????????????????




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2