黑马程序员技术交流社区

标题: 创建数组问题。感谢大家的解答 [打印本页]

作者: lanbuohan    时间: 2013-7-7 18:29
标题: 创建数组问题。感谢大家的解答
本帖最后由 lanbuohan 于 2013-7-8 01:44 编辑

package cn.itcast.exam;

public class Test2 {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  int num = 0;
  
  for(int i=1;i<101;i++)
  {
   if((i%2)!= 0)
   {
    num++;
   }
  }
  System.out.println("奇数的个数:"+num);
  
  int[] arr = new arr[100];
  
  for(int i=1;i<101;i++)
  {
   
   if((i%2)!= 0)
   {
   
   }
  }
  
}
}


作者: 张承富    时间: 2013-7-7 18:31
int arr = new int[100];
作者: 草帽    时间: 2013-7-7 18:49
首先告诉楼主,不能被二整除的数是奇数而不是素数。
其次一维数组的格式为   数据类型[]数组名 = new  数据类型 [个数]
所以楼主的应该是  int[] arr = new int[100];
  
作者: 杨兴庭    时间: 2013-7-7 20:08
为了更好的维护论坛的学习氛围,如果您的的问题“已经解决”请即时联系版主将帖子状态改成“已解决”

-------------------坚持学习,黑马因你而精彩---------------
作者: 崔龙飞    时间: 2013-7-7 21:05
int[] arr = new arr[100];这里应该改为int[] arr = new int[100];new之后跟的是元素类型,而不是数组名字;
另外看你的代码感觉好多都读不通,我也是刚弄会求素数,把我的代码发给你吧,你出现的问题应该都该在里面;
  1. /*
  2. * 需求:定义功能,打印1-100之间所有的素数;
  3. *                 素数:有且仅有两个正约数的整数,0和1不是素数;即2~i-1之间没有一个是i的约数;
  4. * 思路;根据素数的
  5. *
  6. * 步骤:        1、定义功能;
  7. *                 2、标记一个整数数为素数,boolean flag = true;
  8. *                 3、外循环遍历所有的整数;
  9. *                 4、内循环遍历2 ~ i-1之间的所有整数
  10. *                 5、判断是否为其约数,如果是,flag=false跳出循环 ;
  11. *                 6、在下一次内循环开始前标记flag为true,继续判断;
  12. *                 7、如果flag = true,输出该数;
  13. *
  14. flag是一个布尔变量,定义a也行,默认值为false,定了变量要先赋值后执行;
  15. 外循环遍历所有的数i
  16. 进入内循环对每一个数进行是否是素数判断,如果是(i%j == 0),i不是素数,
  17. 内循环里面设为false,表示不是素数;
  18. 如果i不是素数,就会将标记flag赋值为false,这样下面打印语句就不会执行,重新进行外循环,
  19. 但必须要在将标记flag改写为true,才可以对下次的判断为素数时执行打印语句
  20. 如果这个数是一个素数,就通过if对flag的判断,打印这个素数i。

  21. */
  22. public class SuShu {
  23. /*
  24. * 需求:定义功能,输出打印1 ~ 100之间所有的素数
  25. * 思路:        1、定义一个判断标记,如果为true表示这个数是素数;
  26. *                 2、嵌套for循环遍历所有的数
  27. *                 3、判断j是否为ide约数;
  28. *
  29. * 步骤:1、定义功能;
  30. *                 2、定义标记flag,true表示为素数,false不是;
  31. *                 3、外循环遍历1 ~ 100之间所有的数i;
  32. *                 4、内循环遍历2 ~ 99之间的数j是否为i的约数
  33. *                 5、如果不是,标记flag为false,跳出内循环,继续下一次外循环;
  34. *                 6、重新赋值flag为true,继续下一次内循环判断j是否为i的约数;
  35. *                 7、如果是flag,输出打印i*/
  36.         public static void main(String[] args) {
  37.                 printSuShu(100);                                                                //调用方法;
  38. //                int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};
  39. //                printSuShu_1(arr);
  40.         }
  41.        
  42.         public static void printSuShu(int x) {                                //定义功能;
  43.                
  44.                 int count = 0;
  45.                 boolean flag = true;                                                        //假设i为素数,即boolean flag = true;
  46.                 for(int i = 2;i <= x;i++) {                                                //外循环遍历1 ~ x之间的数i,判断i是否为素数
  47.                         flag = true;
  48.                         for(int j = 2;j <= i - 1;j++) {                                //内循环遍历2 ~ i-1之间的数j,如果j为i的约数表示不是素数;                       
  49. //                        for(int  j= 2;j <= Math.sqrt(i);j++) {          i - 1可以换成Math.sqrt(i);如果在i开平方后的根之
  50. //                                                                                                                前如果没有约数的话就不会再有约数了,更有效率,优化代码;                                                       
  51.                                 if(i % j == 0) {
  52.                                         flag = false;                                                //把flag值改为false,表示不是素数;
  53.                                         break;                                                                //跳出内循环,继续外循环判断下一个数i;
  54.                                 }
  55.                         }                       
  56.                         if(flag) {                                                                        //如果确实为一个素数,输出打印i;       
  57.                                 System.out.println(i);
  58.                                 count++;
  59.                         }
  60.                 }
  61.                 System.out.println("素数出现的个数" + count);
  62.         }
  63.        
  64.         public static void printSuShu_1(int[] arr) {                //打印数组中的素数;
  65.                 boolean flag = true;
  66.                 for (int i = 0; i < arr.length; i++) {                        //外循环从0角标开始遍历数组,获取每一个元素i;
  67.                         flag = true;
  68.                         for (int j = 1; j < i-1; j++) {                                //内循环遍历1 ~ i-1之间的所以元素;
  69.                                 if (arr[i] % arr[j] == 0 ) {                        //如果j角标元素是i角标元素
  70.                                         flag = false;
  71.                                         break;
  72.                                 }
  73.                         }

  74.                         if (flag && arr[i]>1) {                                                //如果这个数是素数,并且值大于1;
  75.                                 System.out.println(arr[i]);                                //输出打印这个i角标上的元素
  76.                         }
  77.                 }
  78.         }
  79. }
复制代码

作者: Rainbow    时间: 2013-7-7 21:17
  int[] arr = new arr[100];   
这行应该是
int[] arr = new int [100];
作者: 方珂    时间: 2013-7-7 21:50
要指定数组的数据类型,int[] arr = new int arr[100];
作者: majunm    时间: 2013-7-7 22:01
int arr[]=new int[100]; 即可
%2!=0 是奇数 不是素数。。
作者: 李江    时间: 2013-7-7 23:38
崔龙飞 发表于 2013-7-7 21:05
int[] arr = new arr[100];这里应该改为int[] arr = new int[100];new之后跟的是元素类型,而不是数组名字 ...

自愧不如,向你学习,严格按毕老师的要求写代码啊....
作者: lanbuohan    时间: 2013-7-8 01:39
张承富 发表于 2013-7-7 18:31
int arr = new int[100];

不知道我在问一嘴 int arr[] = new arr[100];
这个可以吗
作者: lanbuohan    时间: 2013-7-8 01:42
崔龙飞 发表于 2013-7-7 21:05
int[] arr = new arr[100];这里应该改为int[] arr = new int[100];new之后跟的是元素类型,而不是数组名字 ...

感谢帮助,哥们代码写得很好,向你学习
作者: 崔龙飞    时间: 2013-7-8 14:53
graspDN 发表于 2013-7-7 23:38
自愧不如,向你学习,严格按毕老师的要求写代码啊....

客气了啊,朋友,这个问题我也是好几天才弄懂。我就是零基础,没办法,只能一步一步慢来,不要心急啊。一起加油




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