q985147831 发表于 2016-5-13 22:21

【笔记】我要自学网里自己整理的笔记(第四章)l

本帖最后由 奋斗丶小Z 于 2016-6-6 14:09 编辑

51zxw的java基础教程里面的笔记这是第四章的,刚学习做了下笔记,分享给你们,我会时常更新
前三章笔记地址:http://www.52pojie.cn/thread-497219-1-1.html第五章笔记地址:http://www.52pojie.cn/thread-498084-1-1.html

附件有文本格式的可以下载,顺便赞助我点把!


4-1 认识循环
4.2 算术运算符的分类


一元运算符(只对一位操作数)    i只是变量      ++(--)是运算符
i++; <二> i+=1<二>i=i+1; //先使用后对自身加1    int i=1; int b=i++;b=1    i=2(先给b在+1)
++i; <二> i+=1<二>i=i+1; //先对自身加1后使用    int r=1; int b=++r;b=2    r=2 (先+1在给b)
i--;//意思跟i++类似
--i;//意思跟++i类似

二元运算符(只对两位操作数)
(+ - * / %)

三元运算符
if(a>100){
      c=200;
}else{
      c=500;
}

<二>等价于
int a=100
int c=a>100 ? 200:500;



4.3while循环语句   先判断再执行

符合条件,循环继续执行;否则,循环退出。
格式:while(循环条件){循环操作}         

            |
            |    假
   ----循环条件--------》
^         |
|       真|
|         |
   <----循环操作

例子:当1小于等于10时循环输出文字"循环"显示i的数值并把i数值+1,i大于10时输出"循环完毕"
public class AA{
      public static void main(String[] args){
                int i=0;
                while(i<=10){//条件为i<=10,成立时执行循环。大于10后就不执行本循环
                System.out.println("循环");
                System.out.println(i);
                i++;//i+1
                }System.out.println("循环完毕");
      }
}




4.4   实例:累加求和

循环三要素:
1) 循环变量初始化   int i=0;
2) 循环的判断条件   while(i<=10)
3) 循环体中改变的循环变量的值   


循环在哪里使用?
1)重复执行的代码
2)相近或相似的代码,其中变化的地方是有规律的

算1+2+3.....+100的和
public class AA{
      public static void main(String[] args){
                int i=1;
                int ii=0;
                while(i<=100){//条件为i<=100,成立时执行循环。大于10后就不执行本循环
                ii=ii+i;
                i++;//i+1;
                }System.out.println(ii);
      }
}




4.5实例:求学员平均成绩

在while中声明的变量为局部变量,只能在while里使用


题目:录入班级人数和学院成绩,计算班级学员的平均成绩

import java.util.*;
public class AA{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                System.out.println("请输入班级学生人数");
                int renshu=in.nextInt();
                int i=1;
                int fenshu=0;
                while(i<=renshu){
                        System.out.println("请输入第"+i+"个学生成绩");
                        int a=in.nextInt();
                        fenshu=fenshu+a;
                        i++;
                }
                int pingjunfun=fenshu/renshu;
                System.out.println("当前班级人数为;"+renshu+"总分为:"+fenshu+"平均分为:"+pingjunfun);
      }
}


4.6 while循环小结事例


问:2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培养学员人数将达到20万人?

public class AA{
      public static void main(String[] args){
                int i=80000;
                int nian=2006;
                while(i<=200000){
                        i=i+(i/100*25);
                        nian++;
                }
                System.out.println(nian+"年将达到20万人");
      }
}



4.7do-while循环结构

格式:do{循环操作}while{循环条件};
特点:先执行,在判断(先执行一次操作,条件符合继续循环,条件不符合循环退出继续往下执行)

do-while循环和while循环的区别
1)语法不同
while(循环条件){循环操作};   比如:上台表演,评委先看你的长相判断你是否开始表演,才能判断你表演好坏
do{循环操作}while(循环条件);   比如:上台表演,你先表演评委在判断表演好坏

举例:4.6题
public class AA{
      public static void main(String[] args){
                int i=80000;
                int nian=2006;
                do{i=i+(i/100*25);
                        nian++;
                }while(i<=200000);
                System.out.println(nian+"年将达到20万人");
      }
}



4.8 实例:猜数字游戏

import java.util.*;
public class AA{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                int diannao=(int)(Math.random()*100)+1;
                int shuzi;
                do{
                System.out.println("请猜一下电脑随机生成的数是多少?(0-100)");
                shuzi=in.nextInt();
                if(shuzi>100){
                        System.out.println("请输入有效数字");
                }else if(shuzi<0){
                        System.out.println("请输入有效数字");
                }else if(shuzi>diannao){
                        System.out.println("你输入的数字大了");
                }else if(shuzi<diannao){
                        System.out.println("你输入的数字小了");
                }
                }while(shuzi!=diannao);
                System.out.println("恭喜你猜对了");
      }
}



4-9 安装MyEclipse
4-10 使用MyEclipse新建项目
4.11 使用MyEclipse创建java文件



4-12 程序调试 (1)

程序调试的目的:找出缺陷原因,修正缺陷
程序调试的主要方法:设置断点      单步运行      观察变量

调试的主要步骤:
1)猜测出错的位置,设置断点
2)单步运行
3)观察变量的值
4)发现问题
5)修正代码,重新运行
6)解决问题

断点:程序暂停执行的代码行
Debug:调试



4-13 程序调试(2)

调试过程中变量的变化可以在窗口-->显示视图-->变量

import java.util.*;
public class AA{
      public static void main(String[] args){
                System.out.println("请输入一个整数"); //输入123456
                Scanner in=new Scanner(System.in);    //新建一个Scanner名字为in
                int aa=in.nextInt();//接收123456给aa
                while(aa!=0){   //aa值不等于0执行循环    !=0      !=0      !=0    !=0!=0   aa=0
                        int ss=aa%10;//aa值%10给ss       ss=6       ss=5       4      3    2   1
                        System.out.println(ss);//输出ss6         5         4      3    2   1
                        aa=aa/10;               //aa/10aa=12345   aa=1234    123    12   1   0
                }
                System.out.println("/n数值被颠倒");
      }
}



4-14 程序调试(3)

aa/10          123456/10=12345.6       因为aa为整数型的根据自动转换类型所以就变成12345
aa%10          123456%10=6             123456除以10等于12345.6   取余数为6



4-15 for循环结构

特点:循环次数固定
格式:for(参数初始化;条件判断;更新循环变量){循环操作;}

for(int i=0;i<100;i++){System.out.println("测试");}

顺序:先声明一个变量i为0,在判断条件i<100,在执行循环操作,再更新循环变量

例子:循环输入某同学考试的5门课成绩,并计算总分和平均分

import java.util.*;
public class AA{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                int chengji=0;
                for(int i=0;i<5;i++){
                        System.out.println("请输入你的第"+(i+1)+"个成绩");
                        int cheng=in.nextInt();
                        chengji=chengji+cheng;
                }
                System.out.println("5门课程的总成绩为:"+chengji+"平均分为:"+chengji/5);
      }
}



4-16 for循环结构练习
例子:
import java.util.*;
public class AA{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                System.out.println("请输入一个数值");
                int shuzhi=in.nextInt();
                if(shuzhi<=0){
                        System.out.println("请输入0以上的数值");
                }else if(shuzhi>=100){
                        System.out.println("请输入100以内的数值");
                }
                for(int i=0,j=shuzhi;i<=shuzhi&&shuzhi>0&&shuzhi<100;i++,j--){
                        System.out.println(i+"+"+j+"="+(i+j));
                }
      }
}


作业:随机产生100个0-100之间的整数,每个整数代表某个学生的成绩,计算出这些成绩的平均值。
public class AA{
      public static void main(String[] args){
                int chengji=0;
                for(int i=0;i<100;i++){
                chengji=chengji+(int)(Math.random()*100);
                }System.out.println("平均分为:"+chengji/10+"分");
      }
}




4-17   for循环常见问题及break语句
1)不要忘记两个;;    for(int i=0;i<100;i++)
2)如果没有循环条件和循环变量不改变会造成死循环
3)break可以解除死循环




4-18    Continue语句
1)continue:只能用在循环里
2)作用:跳过循环体中剩余的语句而执行下一次循环

对比break和continue
1)使用场合:break可用于switch结构和循环结构中
             continue只能用于循环结构中
2)作用(循环结构中):break语句终止某个循环,程序跳转到循环块的下一条语句。
                     continue跳出本次循环,进入下一个循环。


import java.util.*;
public class AA{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                while(true){
                        System.out.println("请输入密码:");
                        int password=in.nextInt();
                        if(password!=123456){
                              continue;
                        }break;
      }
                System.out.println("密码正确");
}
}




4-19循环嵌套   三种循环结构都可以嵌套使用

总结循环结构

区别1:语法
      while(条件){循环体}
      do{循环体}while(条件)
      for(初始化;条件;更新循环变量){循环体}

区别2:执行顺序
      while循环:先判断在执行
      do-while循环:先执行后判断
      for循环:先判断在执行

区别3:使用场合
      循环次数确定的情况,通常选用for循环
      循环次数不确定的情况,通常选用while和do-while循环



4-20 实例:九九乘法表


public class AA{
      public static void main(String[] args){
                for(int i=1;i<=9;i++){
                        for(int j=1;j<=i;j++){
                              System.out.print(j+"*"+i+"="+j*i+"    ");
                        }System.out.println();
                }
}
}


4-21 实例:(1)

*求1900年1月1日------2015年12月30日   相隔多少天
*
* 1求瑞年366   平年365
*
* */
public class AA{
      public static void main(String[] args){
                int sum=0;
                int k=0;
                int l=0;
                for(int i=1900;i<=2015;i++){//给i值为1900,限制i<2015,每执行一遍i+1
                        if(i%4==0&&i%100!=0||i%400==0){//如果达到瑞年的条件后执行
                              sum=366+sum;//算19年到15年瑞年的天数
                        }else{//相反执行下面
                              k=365+k;//算19年到15年平年的天数
                        }l=k+sum;//算总天数
                        }System.out.println("1900年到2015年相隔"+l+"天");
                        System.out.println("瑞年有"+sum+"天");
                        System.out.println("平年有"+k+"天");
                }
}


实例:(2)

/*
*求1900年1月1日------2016年5月7日   相隔多少天
*
* 1求瑞年366   平年365
* 2判断月份
* */
public class AA{
      public static void main(String[] args){
                int sum=0;
                for(int i=1900;i<=2015;i++){//给i值为1900,限制i<2015,每执行一遍i+1
                        if(i%4==0&&i%100!=0||i%400==0){//如果达到瑞年的条件后执行
                              sum=366+sum;//算19年到15年瑞年的天数
                        }else{
                              sum=365+sum;//算19年到15年平年的天数
                        }
                        }
               
                for(int month=1;month<=4;month++){//给month值为最低1月,限制month为不超过4月;没执行一次月份+1
                        if(month==2){//判断是否为2月
                              if(2016%4==0&&2016%100!=0||2016%400==0){//判断16年的2月是否为瑞年
                                        sum=29+sum;//如果是瑞年的2月就为29天+总天数
                              }else{//如果不是瑞年就是平年了
                                        sum+=28;//如果是平年的2月就为28天+总天数
                              }
                        }else{//判断完16年2月在判断4.6.9.11月为30天
                              if(month==4||month==6||month==9||month==11){
                                        sum+=30;
                              }else{//除2.4.6.9.11其他的就是31天
                                        sum+=31;
                              }
                        }
                        }

                sum+=7;//总天数在进行加5月份的7天
                System.out.print("1900年1月1日到2016年5月7日一共"+sum+"天");
                }
}




实例:(3)

/*
*1.求9月份第一天为星期几
* 1900年1月1日--2012年9月1日   到现在一共有多少天数对7进行去摸
* 结果就为星期几
*
*
* */
public class AA{
      public static void main(String[] args){
                int sum=0;
                for(int i=1900;i<=2011;i++){//这里是算19001月-2011.12的天数
                        if(i%4==0&&i%100!=0||i%400==0){
                              sum=366+sum;
                        }else{
                              sum=365+sum;
                        }
                        }
               
                for(int month=1;month<=8;month++){//这里是算2012年1月-8月的天数
                        if(month==2){//算2012年的2月为瑞年还是平年
                              if(2012%4==0&&2012%100!=0||2012%400==0){
                                        sum=29+sum;
                              }else{
                                        sum+=28;
                              }
                        }else{//算2012年的4.6.9.11和其他的天数
                              if(month==4||month==6||month==9||month==11){
                                        sum+=30;
                              }else{
                                        sum+=31;
                              }
                        }
                        }

                sum+=1;//总天数在进行加9月份的1天
                System.out.print("2012年9月1日为星期"+sum%7);//上面求出天数来在%7天就知道是星期几了
                }
}





实例:(4)
/*
* 2.求9月1日为星期几,初步打出星期表格
*测试
* */
public class AA{
      public static void main(String[] args){
                int sum=0;
                for(int i=1900;i<=2011;i++){
                        if(i%4==0&&i%100!=0||i%400==0){
                              sum=366+sum;
                        }else{
                              sum=365+sum;
                        }
                        }
               
                for(int month=1;month<=8;month++){
                        if(month==2){
                              if(2012%4==0&&2012%100!=0||2012%400==0){
                                        sum=29+sum;
                              }else{
                                        sum+=28;
                              }
                        }else{
                              if(month==4||month==6||month==9||month==11){
                                        sum+=30;
                              }else{
                                        sum+=31;
                              }
                        }
                        }

                sum+=1;//上面算的总天数在加9月份的1天为
                int wekday=sum%7;//算出星期几来
                System.out.println("日\t一\t二\t三\t四\t五\t六");//输出周期并每天的空格为7个
                for(int i=1;i<=wekday;i++){//给i为1(最低星期一);算出的星期几在和i比对;每执行一次i+1
                        System.out.print("\t");//每执行一次增加7个空格(和上面的周期对齐)
                }
                System.out.print("1");//空出相应的空格后填1
      }
}





实例:(5)

/*
*1.求月份第一天为星期几
* 1900年1月1日--2012年9月1日   到现在一共有多少天数对7进行去摸
* 结果就为星期几
*
* 2.求当月有多少天
* 3.制作2012年9月份的日历
* */
public class AA{
      public static void main(String[] args){
                int sum=0;
                for(int i=1900;i<=2011;i++){
                        if(i%4==0&&i%100!=0||i%400==0){
                              sum=366+sum;
                        }else{
                              sum=365+sum;
                        }
                        }
               
                for(int month=1;month<=8;month++){
                        if(month==2){
                              if(2012%4==0&&2012%100!=0||2012%400==0){
                                        sum=29+sum;
                              }else{
                                        sum+=28;
                              }
                        }else{
                              if(month==4||month==6||month==9||month==11){
                                        sum+=30;
                              }else{
                                        sum+=31;
                              }
                        }
                        }

                sum+=1;
                int wekday=sum%7;
                System.out.println("日\t一\t二\t三\t四\t五\t六");
                for(int i=1;i<=wekday;i++){
                        System.out.print("\t");//上面都解释了,就不解释了
                }
                for(int i=1;i<=30;i++){//9月份最低为1天,最高为30天,i值每执行一次+1
                        if(sum%7==6){//判断当天是否为星期6
                              System.out.print(i+"\n");//如果是就换行
                        }else{//如果不是
                              System.out.print(i+"\t");//如果不是就+7个空格,和天数相匹配
                        }
                        sum++;上面每递增1天,总天数也跟着增加(因为上面总天数是到9月1日的)
                }
      }
}




实例:(6)

/*
*
* 制作一份用户输入年份和月份显示的日历
*
* */
import java.util.*;
public class AA{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                System.out.println("请输入年份");
                int year=in.nextInt();
                System.out.println("请输入月份");
                int month=in.nextInt();
                int sum=0;
                for(int i=1900;i<year;i++){
                        if(i%4==0&&i%100!=0||i%400==0){
                              sum=366+sum;
                        }else{
                              sum=365+sum;
                        }
                        }
               
                for(int i=1;i<month;i++){
                         if(i==2){
                              if(year%4==0&&year%100!=0||year%400==0){
                                        sum=29+sum;
                              }else{
                                        sum+=28;
                              }
                        }else {
                              if(i==4||i==6||i==9||i==11){
                                        sum+=30;
                              }else{
                                        sum+=31;
                              }
                        }
                        }
                sum+=1;
                int wekday=sum%7;
                System.out.println("日\t一\t二\t三\t四\t五\t六");
                for(int i=1;i<=wekday;i++){
                        System.out.print("\t");
                }
                for(int i=1;i<=31;i++){
                        if(sum%7==6){
                              System.out.print(i+"\n");
                        }else{
                              System.out.print(i+"\t");
                        }
                        sum++;
                }
      }
}



q985147831 发表于 2016-5-13 22:27

沙发我的,哈哈哈哈

brakefast 发表于 2016-5-13 22:28

收下笔记,学习去了233~

慢慢的拼凑 发表于 2016-5-13 22:29

学习了,顶你

yhxing 发表于 2016-5-13 22:30

是好东西啊.. 写的也很多 对于不太懂的来说只是看一眼啊.

xblang 发表于 2016-5-13 23:05

看到这个,想起了,当年那个TC的程序。。。。

新西兰天气晴 发表于 2016-5-13 23:06

wameise 发表于 2016-5-13 23:08

腻害腻害

帝国永存 发表于 2016-5-13 23:12

有用啊!   先留存下来,日后慢慢学习!感谢楼主!

peny1 发表于 2016-5-13 23:35

LZ好勤奋啊!被你感动了{:301_999:}
页: [1] 2
查看完整版本: 【笔记】我要自学网里自己整理的笔记(第四章)l