JAVA中得编程思想

 

    今天是加入黑马群的第二天,看了毕向东老师的教学视频。
    对于毕老师的编程思想概念的提出感觉很是收益。
    编程思想到底是什么呢?
    生活中我们要思考,人生中我们会感悟,学习中我也会领悟。这一切的一切都要源

于,我们对万事万物的思索,也就是我们人类特有的思想了。有想就有做,我们思考的

目的无非就是实践。生活中思考让我们能够生存,人生中感悟使我们认识自我,学习中

领悟我们得到知识。久而久之,我们形成了一种惯性,比如说:“饿了就要吃饭”,“

冷了就要穿衣”,“孝敬父母”,“要做对社会有用的人”,“技不压身,能者多得”

,“知识就是财富”等等。这些通用的哲理看似都很简单,但其实这就是思想,也就是

我们刚说的一种惯性。
    这样来讲,在编程学习过程中,我们也是在逐渐培养自己的编程思想,形成惯性。

久而久之,也对程序语言的理解更加深入透彻。
    我们知道在JAVA中有很多的组成元素,这些不同的元素又各具功能。又这些不同的

元素组成的复杂集合,往往刚接触看的头疼不已。就算有一定基础的朋友,在碰到已经

成型的项目源码可能也会一头雾水,一时半会看不出什么门道,更别说要自己写或者自

己设计了。我们学习JAVA基础,也就是要认识这些构成JAVA的基本元素,以及他们的基

本应用。可是我们要提高自己的JAVA水平,那就要对这些基本元素的应用收悉的不能在

收悉,也就是要培养自己的编程思想。
    哪如何培养自己的编程思想呢?
    我在学习JAVA的时候也是零基础开始的,以前听到编程俩个字感觉很神秘,觉得编

写程序应该是一门很高深的学问,可刚接触JAVA的时候已经有一些C和C++的语言基础,

觉得JAVA也就那样,不是很难。可后来慢慢接触到类,对象,抽象类,接口,封装这些

等等的概念之后,一下迷糊了。可是又不甘心,所以拼命钻研,可是越学越迷糊,越钻

研问题越多。一度差点又放弃的念头,可是经过不断的联系过程中,翻来覆去的做例子

。不知不觉的发现,问题都明了了,思绪也逐渐清晰了。以前都没有想过这些问题。今

天看来毕老师的视频,学习到编程思想的概念后,才发现当时自己在逐渐形成了JAVA的

编程思想,所以算是入门了。
    总结了一下,该如何培养编程思想呢。
    首先,我们要有一个扎实的理论基础。对于JAVA中得各种元素的定义,概念的理解

。可以更便于我们对其应用。
    其次,要进行充足的实例操作。对每种元素的应用,我们可以通过各种实例来揭示

它的原理,并发现自己对其在某些方面掌握的不足,可以总结发现自己的问题所在。
    再次,善于总结。元素都是死的,而我们应用的过程却是活得。
    最后,发挥创造,举一反三。把不同的实例,可以结合在一起形成新的逻辑关系。
    暂时只能总结这么多,慢慢在学习中在总结吧。欢迎其他的朋友可以给于进一步的

补充。
    附上几个程序思想的例子:
    累加和计数器:
    累加运算和COUNT计数器
    public class numTest {
 static int[] num=new int[100];
 static int count=0;
 static int sum=0;
 public static void main(String[] args) {
  //初始化数组
  for (int i=1;i<=100;i++)
  {
   num[count]=i;
   count++;
   sum+=num[count];
  }
  System.out.println("从1到100的整数和为:"+sum);
  System.out.println("相加了多少次:"+count);
     }
 }
     排序:
     public class numTest1 {
 static int[] num={4,9,16,2,7,54,33,40,55,20};
 public static void main(String[] args) {
  for (int i=0;i<10;i++)
  {
   int temp=0;
   if (i<=8)
   {
    if (num[i]>num[i+1])
    {
    temp=num[i+1];
    num[i+1]=num[i];
    num[i]=temp;
    }
   }
       System.out.println("数组正序排列:"+num[i]);
  }
            }
 }
      递归:
      public boolean check(int x,int y)
      {
 if (x>y)
 return true;
 return false; 
      }
      public boolean checkAngin(int a,int b)
      {
 if (a<100)
 return check(a+3,b+5);
        if (b<50)
 return check(a+5,b+3);
 }

在付一个递归的例子:(扫雷游戏的递归逻辑)
public int checkAgein(int r1, int c1)
 {
  int num = 0; //记录周围雷数
  //判断是否有左上
  if (r1-1>=0 && c1-1>=0)
  {
   if (map[r1-1][c1-1]==20)//判断左上是否有雷
   {
    num++;
   }
  }
  if (r1-1>=0)//判断上
  {
   if (map[r1-1][c1]==20)
    num++;
  }
  if (r1-1>=0 && c1+1 <= 11)//右上
   {
   if (map[r1-1][c1+1]== 20)
    num++;
   }
  if (c1-1>=0)//左
  {
   if (map[r1][c1-1]==20)
    num++;
  }
  if (c1+1<=11)//右
  {
   if (map[r1][c1+1]==20)
    num++;
  }
  if (r1+1<=11 && c1-1>=0)//左下
  {
   if (map[r1+1][c1-1]==20)
    num++;
  }
  if (r1+1<=11)// 下
  {
   if (map[r1+1][c1]==20)
    num++;
  }
  if (r1+1<=11 && c1+1 <=11)//右下
  {
   if (map[r1+1][c1+1]==20)
    num++;
  }
  return num;
 }
 public void check(int r , int c)
 {
  //碰撞检测
  if (map[r][c]==20)
  {
   gameOver = true;
  }
  else {
   //判断周围是否有雷和雷数
   int number = checkAgein(r, c);
   if (number>0)//这点周围有雷
   {
    //有雷就要在这点显示周围的雷数
    map[r][c]= number;
   }
   else //如果这点周围没有雷
   {
    map[r][c]=14; //逻辑上认为该点没雷 下次递归不再轮到该点 翻开该点
    //判断该点周围的情况
    //左上
    if (r-1>=0 && c-1 >=0)
    {
     if (map[r-1][c-1]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r-1,c-1);//如果该点没有被翻开 就继续检查该点
    }
    //上
    if (r-1>=0)
    {
     if (map[r-1][c]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r-1,c);//如果该点没有被翻开 就继续检查该点
    }
    //右上
    if (r-1>=0 && c+1 <= 11)
    {
     if (map[r-1][c+1]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r-1,c+1);//如果该点没有被翻开 就继续检查该点
    }
    //左
    if (c-1 >=0)
    {
     if (map[r][c-1]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r,c-1);//如果该点没有被翻开 就继续检查该点
    }
    //右
    if (c+1 <=11)
    {
     if (map[r][c+1]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r,c+1);//如果该点没有被翻开 就继续检查该点
    }
    //左下
    if (r+1<=11 && c-1 >=0)
    {
     if (map[r+1][c-1]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r+1,c-1);//如果该点没有被翻开 就继续检查该点
    }
    //下
    if (r+1<=11)
    {
     if (map[r+1][c]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r+1,c);//如果该点没有被翻开 就继续检查该点
    }
    //右下
    if (r+1<=11 && c+1 <=11)
    {
     if (map[r+1][c+1]<14)// 判断该点是否被翻开 即该点周围也没有雷
      check(r+1,c+1);//如果该点没有被翻开 就继续检查该点
    }
   }
  }
 }

### Java 中 PDA 的实现与应用 #### 个人数字助理 (Personal Digital Assistant) 在 Java 编程环境中,PDA(个人数字助理)通常指的是用于移动设备的应用程序开发。这些应用程序可以管理日历、联系人和其他个人信息。对于这类 PDA 应用,在 Java ME (Micro Edition) 平台上有着广泛的支持[^1]。 ```java // 示例:创建一个简单的 PDA 日历条目 import javax.microedition.pim.Event; import javax.microedition.pim.PIM; public class PDACalendar { public void addEvent(String summary, long startTime, long endTime) throws Exception { Event event = (Event) PIM.getInstance().openPIMList(PIM.EVENT_LIST, PIM.READ_WRITE).createItem(); event.setSummary(summary); event.setDate(Event.START, Event.TIME, startTime); event.setDate(Event.END, Event.TIME, endTime); ((javax.microedition.pim.EventList)event.getEventList()).commit(event); } } ``` #### 概率数据关联 (Probabilistic Data Association) 另一方面,如果提到的是概率数据关联算法,则更多应用于目标跟踪领域。这种技术通过计算观测值属于某个特定目标的概率来解决多传感器融合问题。虽然这不是传统意义上的 “PDA”,但在某些上下文中确实会这样缩写。Java 实现此类算法主要依赖于统计库和矩阵运算包,如 Apache Commons Math 或 Colt Library[^2]。 ```java // 示例:使用 Apache Commons Math 进行简单高斯分布估计 import org.apache.commons.math3.distribution.NormalDistribution; public class ProbabilityDataAssociation { private NormalDistribution distribution; public ProbabilityDataAssociation(double mean, double stdDeviation) { this.distribution = new NormalDistribution(mean, stdDeviation); } public double calculateProbability(double value){ return distribution.density(value); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值