• 20145314郑凯杰 《Java程序设计》第2周学习总结 代码开始!


    ---恢复内容开始---

    # 20145314郑凯杰 《Java程序设计》第2周学习总结 代码开始!

    教材学习内容总结

    跟着教材的顺序开始总结我学过的内容:

    1编辑、编译、运行教材上代码

    这部分的所有内容在我等一会的博客内容中会出现,也会将代码托管到开源中国。

    运行结果1 10与5的关系

    运行结果2 2的次方。我觉得除了上课和卢晓明说的那种改进方法之外,留着最后一个number=也不是一种方法,结果是一样的。

    给个代码吧:

    package adc;
    public class adc {
    public static void main(String[] args){
    	int number=1;
    	System.out.printf("2的0此方是:%5d%n",number);
    	System.out.printf("2的1此方是:%5d%n",number<<1);
    	System.out.printf("2的2此方是:%5d%n",number<<2);
    	System.out.printf("2的3此方是:%5d%n",number<<3);
    	
    }
    }
    

    运行结果3 用unicode写的hello world

    运行结果4 用小数表示方法写的0.0012

    另外,等会还会在以下代码托管到开源中国:

    代码已托管,地址https://git.oschina.net/qiaokeli26/java-besti-is-2015-2016-2-20145314

    1、输出常量
    
    2、用变量输出
    
    3、12的三种表示方法(十进制,十六进制,八进制,附加二进制)
    
    4、试验布尔型常量
    
    5、0、1各种逻辑运算
    
    6、成绩分类系统if-else版
    
    7、成绩分类系统swithch版
    

    2、这里先总结一下本周所学的语法

    ①类型、变量与运算符:主要有int byte boolean long short double float。此部分的类型转变,若要强制转变,则可用两种格式:

    第一种 a=(byte)(数字或变量)。第二种a=10.4154f。

    接下来有很重要的,逻辑语法:

    ①if else语法:先对if括号中进行判断,若满足,则执行直接跟随的语句,若不满足,则执行else后面的语句。

    ②switch语句:对switch括号中的变量进行判断,然后在下面给出值。满足哪个值,就执行对应答案后面的语句。

    (以上两个语法的不同和用法会在下面的例子中出现。)

    ③for循环:这一循环是用来进行基本循环的三大循环之一,其他两个见下方.for循环在知道执行次数的时候会非常好用。这里提一下,for(;;)中三个语句,只有第二个不能空着,但是虽然1,3个空可以空着,这样的做法还是违背了for的语法初衷。

    ④while循环:三大循环之一,这里指while(条件){};我常用的是while(true){语句(满足条件时+break;)}

    ⑤while循环2:do{}while()循环,每次循环结束都进行一次判断。是上面一种循环的改进版。

    ⑥break、continue:这两个简单说就是break跳出循环,continue只跳过一轮循环,进入下一轮循环。

    语法总结完毕。

    3、完成课后习题

    我简单附上我的答案和最后操作题我编写的代码吧:

    1:D 由于没有给number赋上初始值,没法输出。

    2:A 没语法错误,/是取商除法

    3:D 没有让程序闭嘴

    4:D 理由同上

    5:A 在计算机中储存以01形式储存,溢出后自然退回到最小值。

    6:B 明显的

    7:A number=i++是先把i赋值给number再自增1,number=++i是先自增1,再赋值。

    8:D 同上

    9:A i=5的时候触发if,跳过输出

    10:D i=5时出发for(;中间;)这条语句,for语句结束。

    接下来操作题

    1、我的代码如下:

    //辗转相除法求最大公因子
    package adc;
    public class adc {
    public static void main(String[] args){
    	int m=1000,n=495,d;
    	do{d=m%n;
    		m=n;n=d;
    	}while(m%n==0);
    	System.out.println(n);
    }
    }
    

    运行结果:10

    2、阿姆斯特朗数,这部分需要注意的是十位数的处理,应先减去i/100*100,才能取出其十位和个位的数字。

    代码附上:

    找出阿姆斯特朗数
    package adc;
    public class adc {
    public static void main(String[] args){
    	int i=100;
    	for(i=100;i<=999;i++)
    	{if(((i/100)*(i/100)*(i/100)+((i-(i/100*100))/10)*((i-(i/100*100))/10)*((i-(i/100*100))/10)+(i%10)*(i%10)*(i%10))==i)
    		System.out.printf("%d是一个阿姆斯特朗数
    ",i);}
    }
    

    教材学习中的问题和解决过程

    一、学习中我对“%n”与“/n”的区别不是很明白,后来看书发现,其实只是运行平台的问题。也就是说,在windows平台上,这两者是可以通用的。

    二、编译时候通不过的一点就是printf和println的区别。printf可以这样写

    System.out.printf("%d叽里呱啦叽里呱啦",变量名)

    而println不可以,只可以加上变量名。

    代码调试中的问题和解决过程

    代码调试方面,我出现了两个问题。一个是下面的语句居然出现问题,我很疑惑

    boolean a1,b1,c1,d1,e1 = true, condition = false;
    	int flag=0;
    	while(true)
    	{if(a1&b1&c1&d1&e1)
    

    这一段中,if中出现了问题,我很费解,按我的思路。布尔型的变量进行相与,应该是没有问题的。但是,为什么会出现问题呢。

    刚开始我进行的解决方式是,改成逻辑与&&

    失败了,第二种方式,层递括号:if((((a1&b1)&c1)&d1)&e1)

    还是失败,最后一种方式,我发现了程序的问题,赋值问题,因此有了两种改法:

    boolean a1=b1=c1=d1=e1 = true 或boolean a1= true,b1= true,c1= true,d1= true,e1 = true;

    其他(感悟、思考等,可选)

    第一周,没什么好写的代码

    但是从第二周开始,有了语法之后代码就开始变得多种多样了。

    我还自己编写了一个基于cpu运算效率的计数器,即用五层计数来实现层递计数。

    虽然现在这个程序的实用性还不是很高,但是我相信在学过了时间变量之后,这个程序的改进版本一定能大放异彩!

    package adc;
    public class adc {
    public static void main(String[] args){
    	boolean a1=b1=c1=d1=e1 = true;
    	int flag=0;//设置来进行计数
    	while(true)
    	{if(a1&b1&c1&d1&e1)//与运算,刚开始执行它。
    	   {System.out.println("哔哔哔");e1=false;}//在输出一次之后,改变其中一个
    变量的值,使下一次不再执行它。
    	else//接着执行接下来的计数部分。
    		{
    			if(a1){do{flag++;}while(flag==5000000);
    			 flag=0;a1=false;}//计数5000000,完成后关掉a1,进行下一项计数
    			else{if(b1){do{flag++;}while(flag==5000000);
    			     flag=0;b1=false;}//层递计数直到e1
    				 else
    				 {
    					 if(c1){do{flag++;}while(flag==5000000);
    					 flag=0;c1=false;}
    					 else
    					 {
    						 if(d1){do{flag++;}while(flag==5000000);
    							 flag=0;d1=false;}
    						 else
    						 {
    							 if(e1)do{flag++;}while(flag==5000000);
    							flag=0;e1=true;a1=true;b1=true;c1=true;d1=true;
    				//上面的计数全部完成后,恢复a1到e1的值,进行一次输出,再循环反复。
    						 }
    					 }
    				 }
    				}
    		}
    	}
    }
    }
    

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 50/50 1/2 20/20
    第二周 700/600 2/4 38/38
    第三周 /1100 3/7 /60
    第四周 /1350 2/9 /90

    参考资料

  • 相关阅读:
    T3java核心API基础类
    java字符编码
    Servlet 1
    T2java面向对象
    T1java语言基础
    Mac OS mysql数据库安装与初始化
    java多线程中注入Spring对象问题
    T4java核心API集合类
    The first day Teddy
    Spring第二节 注入依赖
  • 原文地址:https://www.cnblogs.com/5314zkj/p/5268380.html
Copyright © 2020-2023  润新知