java吧 关注:1,256,622贴子:12,750,057

回复:【入驻JAVA吧 记录学习点滴】

只看楼主收藏回复

蛋疼,复制粘贴都出问题了 下面还有~~~~~~~~~~
从 OOP 来说分为,基本可氛围“类库的生产者”和“类库的消费者”。
类库的消费并不都是具备了面向对象思想的人,通常知道如何继承和派生新对象就可以使用类库了,然而我们的思维并没有真正的转过来,使用类库只是在形式上是面向对象,而实质上只是库函数的一种扩展。 因此,你要站在 类库生产者 的角度去考虑,比如去考虑 .NET 类库为什么要这样设计,这也是一条很好的学习路线



143楼2011-12-16 16:00
回复
    我擦 联系粑粑 蛋疼~~~~~


    144楼2011-12-16 16:01
    回复
      【程序29】
      题目:求一个3*3矩阵对角线元素之和
      1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
      做几道题


      145楼2011-12-16 17:16
      回复
        import java.util.Scanner; public class Test29 {
        /**
        *
        * 【程序29】 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 1 2 3
        * 4 5 6 7 8 9
        *
        * 3*3矩阵 也就是一个3行3列的二维数组
        * */
        // 输入每次输入3个数,每个数字之间用逗号隔开
        public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String[] arr = new String[3];
        // 输入二维数组的元素
        for (int i = 0; i < 3; i++) {
        System.out.println("请输入第" + (i + 1) + "行的3个元素");
        arr[i] = input.next();
        }
        String[][] arr1 = new String[3][3];
        for (int i = 0; i < 3; i++) {
        arr1[i] = arr[i].split(",");
        } int[][] arr2 = new int[3][3];
        for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
        arr2[i][j] = Integer.parseInt(arr1[i][j]);
        }
        } // 计算对角线上元素的和,对角线在数组中也就是行和列相等时的元素的和
        int sum = 0;
        for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
        if (i == j || i + j == 2) {
        sum += arr2[i][j];
        }
        }
        } System.out.println("对角线上的元素和为:" + sum);
        }
        }


        146楼2011-12-16 17:17
        回复
          你是说按逆序输出可以用这个方法么?


          147楼2011-12-16 17:22
          回复
            恩,StringBuilder 是很好用的类,高效并节省内存,推荐使用。


            IP属地:澳大利亚148楼2011-12-16 19:12
            回复
              【程序33】
              题目:打印出杨辉三角形(要求打印出10行如下图)
              1.程序分析:
              1
              1 1
              1 2 1
              1 3 3 1
              1 4 6 4 1
              1 5 10 10 5 1


              149楼2011-12-17 16:02
              回复
                这种按一定规律输出某种元素的题,最好考虑输出结果的美观性。对于杨辉三角,由于其元素是无穷尽的,所以对美观性难以把握,暂时只考虑元素大小小于1000的情况。


                150楼2011-12-17 16:04
                回复
                  import java.util.Scanner; public class Test33 { /**
                  * 【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图)
                  *
                  * 实现:将杨辉三角看成一个二维数组,n行n列; 输出n行杨辉三角
                  * */ public static void main(String[] args) {
                  Scanner input = new Scanner(System.in);
                  System.out.println("请输入行数:");
                  int n = input.nextInt(); int[][] arr = new int[n][n];
                  // 第一行的数字1
                  arr[0][0] = 1;
                  for (int i = 0; i < n; i++) {
                  System.out.print(" ");
                  }
                  System.out.println(arr[0][0]); for (int i = 1; i < arr.length; i++) {
                  arr[i][0] = 1;
                  // 输出每一行的第一个数字1
                  for (int j = 0; j < n - i; j++) {
                  System.out.print(" ");
                  }
                  System.out.print(arr[i][0] + " ");
                  // 输出每一行的中间数字
                  for (int j = 1; j < i; j++) {
                  arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
                  //对于输出结果中空格的输出,为了美观起见,当元素为2位数,3位数,希望数字间第位数间距离相等
                  //本程序所采用的空格输出,只适合元素在小于4位数的杨辉三角,如果元素有4位的时候,就不美观了
                  //具体可以运行体会
                  if (arr[i][j] < 10) {
                  System.out.print(arr[i][j] + " ");
                  } else if (arr[i][j] > 9 && arr[i][j] < 100) {
                  System.out.print(arr[i][j] + " ");
                  } else if (arr[i][j] > 100) {
                  System.out.print(arr[i][j] + " ");
                  }
                  }
                  // 每一行末尾的数字1
                  arr[i][i] = 1;
                  System.out.println(arr[i][i]);
                  }
                  }
                  }


                  151楼2011-12-17 16:04
                  回复
                    其实开始也没有想到用二维数组存元素,开始想摸索第n行元素与n的关系~~~后来发现,第n行必须是和n-1行相关的~~~~~~~ 只好用二维数组了


                    152楼2011-12-17 16:06
                    回复
                      忙了一下午的约瑟夫环的问题~~~~主要是刚好学到面向对象,从这个题目,思考的方式似乎一直在意它的过程,于是便思索了一下午怎么用面向对象的思维方式解决这个问题,可是发现最后反而越想越麻烦~~~~~~~~~~~~~~~~~~~最后还是用了以前的程序,学了好多天的面向对象~~总结一下却只发现所谓的继承 多态 封装~~这种设计思想似乎一点没掌握~


                      154楼2011-12-17 20:39
                      回复
                        算法是解决问题的,考虑的是设计效率。并不需要刻意去面向对象。只需要将解决问题的方法封装好一个容易被理解的接口被其它程序调用就好了。


                        156楼2011-12-17 21:08
                        回复
                          经典50题做的差不多了,发上来吧


                          157楼2011-12-19 09:13
                          回复
                            【程序34】
                            题目:输入3个数a,b,c,按大小顺序输出。


                            158楼2011-12-19 09:15
                            回复
                              由于刚学到split这个方法,就用上了,这道题当然有很多种写法,也很简单
                              public class Test34 {
                              public static void main(String[] args) {
                              Scanner input = new Scanner(System.in);
                              System.out.println("请输入3个数字,以逗号隔开:");
                              String str = input.next();
                              String[] arr = new String[3]; for (int i = 0; i < arr.length; i++) {
                              arr = str.split(",");
                              } int[] number = new int[3];
                              for (int i = 0; i < arr.length; i++) {
                              number[i] = Integer.parseInt(arr[i]);
                              } int temp = 0;
                              for (int i = 0; i < number.length-1; i++) {
                              for(int j = 0; j < number.length - i -1; j++){
                              if(number[j] < number[j + 1]){
                              temp = number[j];
                              number[j] = number[j + 1];
                              number[j + 1] = temp;
                              }
                              } } for (int i = 0; i < arr.length; i++) {
                              System.out.print(number[i] + " ");
                              }
                              }
                              }
                              


                              159楼2011-12-19 09:16
                              回复