笔记心得01

第一周个人知识汇总 ***心若冰清,天塌不惊***
1) int类型转化成String类型
ss=22+"";
int,byte,char类型在转换的时候都是先转换成编码的具体数值 再参与运算
int a='c'-'a' //      2
String k3='b'+""; //此除外   b
String k2='b'-'b'+'b'+"" //结果是98
在双色球案例中,
String ss="";
ss=ss+"红球是:\n"+redball+"\n";     连接字符串使用
2) 关于编码转换问题
*首先是将下载后的文件使用GBK的编码方式打开,看到正常字符
*复制粘贴到外面的记事本上,
*在将myeclipse中的GBK编码方式变成utf-8,将看到的乱码删除掉
*将记事本上的文字贴在myeclipse中
3)>>>硬右移
4)String ss="d,a,s,d,f,g,h,j,h,j,j,j,";   
String a[]=ss.spilt(",");
String ss="a.s.d.g.h.1.2.3.4.!"
String s[]=ss.spilt("\\."); //.需要转义字符的帮助
5)   Random ran=new Random();
int a=ran.nextInt(30); //就产生0到29这30个元素
int b=ran.nextInt(30)+1; //产生1到30这30个元素
6) Arrays中的方法
String []all={"1a","2","a_s","b","asafa","~!,"&"};
System.out.println(Arrays.toString(all)); //
Arrays.sort();
7)    public static void arraycopy(Object src, 
                                 int srcPos, 
                                Object dest, 
                                int destPos, 
                                int length) 
     从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的 目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。 
8)
int类型比float类型精确的多,所以不建议使用float类型表示小数字,使用double类型表示比较好
9)选择排序,冒泡排序,插入排序,
10) char last=id.charAt(17);
last=last=='x'?'X':last; //就是说,last这个元素如果等于x则把X的值赋值给last,否则把last=last
11)递归调用,
*一定要有出口,
*把大问题换成小问题
*效率比较底,但是比较好理解
// 1*2*3*4*5....*n=f(n)=n*f(n-1) && f(1)=1
public static long mm(int n){
if(n==1)return 1;
// System.out.println(n+"*MM"+(n-1));
return n*mm(n-1);
12)彩票问题2种比较不错的算法
*采取标志位
定义一个判断的数组,全是false,在取出的时候把它标记为true,
下次取出的时候之前,如果是true的则从新取出,如果是false的则重fu以上的操作,知道取满为止
for (int i = 0; i < all.length-1; i++) {
int idx;
do{
idx=r.nextInt(red.length); //0~32

}while(used[idx]); //向前返适合使用do   while 找一个没有使用的位置
used[idx]=true; //****标志上我已经使用了***
all[i]=red[idx]; //取出一个没有使用的红球
}
*采取抽取算法
int ind=ran.nextInt(33-i)+1;
ball[i]=a[ind]; 把抽到的号码做为下标,取出该a在该下标中的数值赋值给目标数组
a[ind]=a[32-i]; 在把被抽走的数字用最后一位补上,达到串位的思想(下标里的数值)
13)关于数组自增
int[] ary = new int[] { 1, 2, 4, 5 };
int [] ary6=Arrays.copyOf(ary,ary.length+1 ); //自己给自己增加
System.out.println(Arrays.toString(ary));
14)判断一个数字是不是素数
public static boolean puanDuan(int n){ //就是不能被整除即整除==0
for (int i = 2; i <= n/2; i++) {
if(n%i==0){
return false;
}
}
return true;
} //个人认为作的不错的算法

15) break跳出所在的层循环,继续向下执行
public static void BreakDemo() {
boolean b = false;
int i=0;
for ( i = 0; i < 10; i++) {
System.out.println("i:     "+i);
for (int j = 0; j < 5; j++) {
System.out.println("j:              "+j);
if (j == 3) {
b = true;
break;
}
}

if (b) {
break;
}
}
System.out.println(i);
}

16)  遇到一组数字与一组数字相乘的时候,可以考虑系数数组的办法
       结合1的简单介绍,案例是 身份证验证问题
//系数数组ki{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,}
  //遍历所有前17位所有数字
  //中间值=每个字乘以系数
  //总值+=中间数值
  //求余数
  //转换数组kc
  //尾数字范围1,0,X,9,8,7,6,5,4,3,2,1,    




你可能感兴趣的:(算法,MyEclipse,F#,J#)