使用Java理解程序逻辑
之凌波微步
船舶停靠在港湾是很安全的,但这不是造船的目的
北大青鸟五道口原玉明老师出品
1.学习方法:
01.找一本好书
初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证
02.查看帮助文档和搜索引擎的使用
借助网络上的Blog文章
03.不要急功近利
不要抱着速成的想法,否则必然走弯路
学习编程不是一蹴而就的事情
付出的成本高,才能有一个高薪的收入
04.不要浮躁
不要什么都学,只学有用的
浮躁的程度和技术水平成反比的
走自己的路,让别人去浮躁去吧!
每天问问自己,我是不是开始浮躁了,不能人云亦云.
05.学习语言基础很重要
基础不扎实,开发出的程序就很危险
将所学的用到开发中去
06.什么时候去看别人的代码?
揣摩编写代码人的思路,远比自己写软件要难得多
初学者不要去看别人的代码
在纸上把调用关系画出来,抓主线.
07.如何提高?
有主动性。学习的欲望要强。上网找别人的问题,为自己来提高
08.培养发现问题、思考问题和解决问题的能力
出错信息,异常信息
养成发现问题、思考问题和解决问题的能力
这种能力受益一辈子,且不随时间变化
09编程的思想
多用心,多动手
程序运行的原理和机制
编程的目的,函数的调用,内存模型
10.先学脉络,再学枝叶
第一章 Java基础
程序目标:减轻现实生活中一类人的工作量,提高工作效率。
学员最终可以书写系统:
超市管理系统,POS机系统等
入库单
销售单
01.课程重点
五大重点:
01.分支(选择)结构
02.循环结构
03.数组
04.二重循环
05.带参方法
02.什么是计算机程序?
解析:就是为了完成某一项工作而执行的一系列有序指令的集合。
03.Java相关的技术有哪些?
JavaSE(桌面应用开发) JavaEE(Web开发)
老师,你教教我如何判定一个程序是桌面程序还是web程序?
解析:浏览器:
IE
搜狗浏览器(内核IE) 傲游 世界之窗 360 QQ 猎豹
FireFox
Opera
IE不等于浏览器,只是浏览器的一种
判定规则:如果一个程序(软件)不需要借助浏览器就可以执行的,那么就是桌面应用程序
反之,是web应用程序。
04.开发Java程序的步骤有哪些?
编写,编译,运行
05.Java程序的基本框架是什么?
解析:外层框架和内层框架,详细见后续讲解。
06.Java的注释类型有哪些?
单行://
多行:/**/
课程重点:
01.平台和语言不是一码事。一个平台下可以运行多种语言编写的代码。
班级管理系统
宿舍管理系统
超市管理系统
国家电力管理系统
水费管理系统
OA管理系统
07.开发自己的第一个java程序
01.配置环境变量
001.对我的电脑点击右键→属性→高级系统设置→环境变量→系统变量,在系统变量中
查找有没有名称为path的变量名,如果有,直接点击“编辑”按钮,然后按“Home”键将
光标定位到第一个位置
002.打开“我的电脑”→打开C盘→找到“Program Files文件夹”→Java→jdk1.7.0_17
→bin,复制路径
003.将复制的路径粘贴到光标闪动的位置,然后紧跟一个分号(;)
004.一路确定,直到所有窗口消失。
005.打开“开始”→“运行”→输入cmd→输入javac回车,如果出现一连串中文,证明
环境变量配置成功。
02.编写代码
001.在D盘的根目录创建一个名称为Hello的后缀名为java的文件。
002.编写代码
03.编译
通过javac命令将后缀名为.java的文件编译成后缀名为.class的文件(字节码文件)
04.运行
通过java命令运行后缀名为.class的文件,运行的时候,后缀名不需要
使用记事本编写第一个Java应用步骤
1.编写源程序
2.用javac命令将后缀名为.java文件编译成后缀名为.class的文件
3.使用java命令执行硬盘上后缀名为.class,但是点和class都不要
说有同学问,为什么在把.class文件用java命令执行的时候,不需要后缀?
专业人士解析:
当我们把.class文件交给JVM(Java虚拟机)的时候,它可以自动识别出后缀。
Java执行流程
Happy.java---第一道编译工作交给Java编译器---->Happy.class(字节码文件)
-------第二道编译交给JVM----->二进制(CPU可以识别)
08.程序编码规范
解析:作为一个专业的程序员,编码规范如下:
01.文件名,所有代码的名字都必须是英文的,而且所有出现的标点符号都是在
英文半角下。
02.代码要有缩进。
09.MyEclipse和Eclipse区别?
解析:MyEclipse(收费的)
Eclipse(免费的)
MyEclipse功能比较强大
10.Java程序的执行机制
解析:01.编译过程
就是将后缀名为.java的文件通过java编译器编译成后缀名为.class的文件,编译命令
javac
02.执行(运行)过程
就是通过java虚拟机(jvm)执行硬盘上后缀名为.class的文件,执行的命令是java
05.public class HelloWorld{
public static void main(String[] args){
System.out.println("我的第一个Java程序");
}
}
我们书写代码是在内层框架中。
06.main方法是java程序的入口,所有程序都是从main方法的第一行代码开始执行的。
07.println()换行打印输出内容,print()不换行
11.转义字符
\n:换行
\t:一系列空格
考试啊亲:第二章学完后
09.java中的注释
单行注释//
//我是高贵的注释:我有特权,编译器不会理会我
//几十万行代码: 3个月后 方便团队成员阅读,方便自己阅读
多行注释:/**/
10.在java中,包名中每一个点都对应硬盘上的一层文件夹
11.在真正的开发中,咱们书写的代码所做的单元测试,都是由程序员来完成的。
第二道测试是由专业的测试人员完成的。
Bug
作业环节:
01.日记一篇
02.前两章单词
03.课后第3和第四题
第二章 变量 数据类型 运算符
1.变量
重点:01.变量就是一块空间(用旅馆的例子做类比)
02.变量三要素:数据类型 变量名 变量值
03.由于电脑记录位置的时候不是很好找(0x0156892321)变量名(num)。
二层 左手边 第三间(203)
2.数据类型
int
char
String
double
char类型只能存储单个字符,如果你想存储一个空字符,要打一个空格。
3.命名规范,如不规范,买糖吃
1.包名所有字母均小写。
2.类名首字母大写
3.变量首字母小写,后续有含义的单词首字母大写。例如stuName stuAge
4.首字母只能是字母,下划线和$符号中的一个,后续的内容可以是数字。
注意点:变量名不能和关键字重复
4.The local variable title may not have been initialized
局部变量"title"没有被初始化(赋值)
定义变量的两种方式
001.先声明,再赋值
int num;
num=5;
002.声明的同时并赋值
int num=5;
5.表达式概念:
用运算符将操作数连接起来的式子就称为表达式a+b
6.赋值运算符(=)
算术运算符:+ - * / %
自增运算符
int num=5;
num++;//等价于 num=num+1;
//++在前和在后的区别
System.out.println(num);
7.类型转换
1.自动类型转换
规则1:
在一个表达式中,如果有一个操作数是double类型,那么整个表达式会被自动提升会double类型
规则2:类型相容,目标类型>源类型
2.强制类型转换
规则:类型相容,目标类型<源类型
8.Scanner用法
如何接收用户从键盘上录入的内容?
路人甲说:接收int怎么搞?
专业人士解析:input.nextInt()
路人乙收:如何接收double类型?
专业人士解析:input.nextDouble();
星爷问:如何接收字符串?
专业人士解析:input.next()
使用Scanner分三步:
01.先导入包import java.util.Scanner; (进入到商场)
02.创建一个扫描仪对象 Scanner input=new Scanner(System.in);
02.启动扫描按钮 String name=input.next();
9.个十百千问题
作业环节:
01.日记
02.第二章总结
03.第二章课后除了类型转换题目
04.开通自己的Blogs
第三章 if选择结构
Int num=70;
If(num>90){
//执行
}else{
}
//www.cnblogs.com
//http://www.oschina.net/
//csdn
//http://www.iteye.com/magazines
//51aspx源码网
01.分支结构
从这一章开始我们书写的代码可能不是从上到下顺序执行,就是程序的流程可以
发生跳转。这种结构分支结构。之前我们所有代码都是顺序执行。
02.逻辑运算符
&&:逻辑与
*表达式1&&表达式2 同真为真,其余为假
||:逻辑或
*:表达式1&&表达式2 有真必真,其余为假
!:逻辑非
*:取反
03.那些年,我们犯的错
01.错误:javScore cannot be resolved
解决方案:可能性有两种
*:就是变量名书写错误
*:无法访问到该变量
02.不堪入目的在类里面直接写代码,代码没有出现在main方法中
04.if-else选择结构
语法:if(){
}else{
}
05. java中产生随机数方法
(int)(Math.random()*10);
范围:从0到1,能取到0,但是取不到1
06.多重if选择结构
if(条件){
}else if(){
}else{
}
多重if各个分支如果顺序互换,语法不报错,但是会影响程序的运行结果 。
07.在java中,比较两个字符串是否相同,用的是equals,而不是==号。
08.嵌套if
在一个ifelse选择结构中,又嵌套了另外一个完成的ifelse选择结构
if(){
if(){
}else{
}
}else{
}
作业时间:
1.第四章 Switch选择结构预习
2.日记本
3.单词3和4章
4.今天讲的
产生1到3之间的随机数
If-else
多重if
嵌套if
第四章 Switch选择结构
01.使用Switch语句常见错误:
1.case后必加break,防止case穿透
2.case后面的变量必须各不相同
3.default块顺序可以变动,但要注意其执行顺序。通常,default块放在末尾,也可以省略
4.switch后面小括号中表达式的值必须是整型或字符型。
02.通过hasNextInt()方法来判定用户录入的内容是否 是数字
04.登陆素材
System.out.println("********欢迎进入微冷的雨购物管理系统************");
System.out.println("菜单功能:");
System.out.println("\t1.登陆系统");
System.out.println("\t2.退出系统");
System.out.println("请输入您要操作的功能,输入数字即可,亲!!!!");
System.out.println("欢迎进入主界面,该软件为您提供了丰富的功能");
System.out.println("1.客户信息管理");
System.out.println("2.购物结算");
System.out.println("3.真情回馈");
System.out.println("4.注销");
System.out.println("是否参加优惠换购活动:");
System.out.println("1:满50元,加2元换购百事可乐饮料1瓶");
System.out.println("2:满100元,加3元换购500ml可乐一瓶");
System.out.println("3:满100元,加10元换购5公斤面粉");
System.out.println("4:满200元,加10元可换购1个苏泊尔炒菜锅");
System.out.println("5:满200元,加20元可换购欧莱雅爽肤水一瓶");
System.out.println("0:不换购");
System.out.print("请选择:");
作业时间
01.15分钟提问单词和各种if
02.颁发前3名奖品
03.自行作业
00.预习第五章 循环结构
01.日记本写一篇
02.单词
03.博客文章(if-Switch选择结构)
第五章 循环结构(一)
1.之前学习的两种结构
01.顺序结构
02.分支结构
03.循环结构
2.While循环结构
*while循环
循环四要素:01.初始变量 02.循环条件 03.改变迭代变量的值 04.循环体
*:通过while循环解决“张浩写1000遍好好学习的问题”
*:字符串作为循环条件
老师每天检查张浩的学习任务是否合格,如果不合格,则继续进行。
老师给张浩安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。
*:初始变量为多个值的循环
2012年培养学员25万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到100万人?
3.练习
*计算100之内的偶数之和
*查询商品价格
*结账和找零
4.do while循环结构
answer cannot be resolved(解析)
do{
}while(条件表达式);
do{
System.out.println("已经完成编码");
System.out.println("合格了吗?(y/n)");
answer=input.next(); //n
}while(answer.equals("n"));
do-while循环的执行机制:
首先do所在的{}里面的内容执行一遍,然后拿变量answer和固定的字符串"n"做对比,如果
条件成立,那么继续执行do{}中的内容,如果不成立,那么就退出整个do-while循环。
5.断点调试步骤
设置断点
启动调试
单步运行
调试启动后,运行到设置断点的代码行将停住
点击F6可以单步运行程序,观察程序运行过程
观察变量
单步运行时可以在“变量”视图中看到变量当前的值
发现问题
修正代码,重新运行
解决问题
二、程序调试的目的:找出缺陷原因,修正缺陷
三、程序调试的主要方法:设置断点、单步执行、观察变量
第六章 循环结构(二)
1.for的出现是为了精简之前while和do-while循环的语法,将之前散乱排列的其中三个要素融合到了for循环固定的语法结构中
For(表达式1;表达式2;表达式3){
表达式1:初始变量
表达式2:循环条件
表达式3:迭代变量
}
作业:第七章项目
日记
第八章 数组
1. 数组的定义:
解析:数组就是一组相同数据类型的集合,可以看成是一个承载一堆
相同类型数据的一个箱子。
2.定义一个变量相当于在内存上占据一块空间
定义一个数组相当于在内存上占据一连串内存空间
3.通过length可以获取数组中一共有几个元素
4.案例
int[] nums=new int[3];
数组的类型其实上就是数组当中每个元素的类型。
String[] names=new String[3];//数组的声明
names[0]="张靓颖";
names[1]="刘德华";
names[2]="周星星";//赋值
//names[3]="巩俐";//下标越界
for(int i=0;i<names.length;i++){
System.out.println(names[i]);//使用
}
double[] nums=new double[3];
nums[0]=1.0;
nums[1]=2.0;
nums[2]=3.0;
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
2.数组四要素
001.标识符:指的是数组的名字
002.数组元素:数组中的每一项数据都称为数组的一个元素
003.数组下标:某个元素在数据中的位置或者编号
004.数组类型:每一个元素的类型
6.注意点:数组一旦定义,不可以再改变
7.使用数组的优点?
解析:001.代码量减少了
002.方便查找
8.定义数组的时候通过new关键字开辟空间
*********************************************************
我们的第三节课
3.会使用三种方式来对数组赋值
方式一:通过下标赋值
names[0]
方式二:通过在声明的同时直接通过{}赋值
int[] nums={1,2,3};
方式三:循环赋值(借助数组的下标)
02.会通过循环的方式给数组元素赋值
03.常见错误
04.数组排序(升序)
05.打擂比较算法
if(num>max){
max=num;
}
01.回顾数组
目的:为了方便的操作数据类型相同的一组数据,我们出现了数组。
因为使用数组可以简化我们对数据的存取操作。
int[] nums=new int[3];
String[] names=new String[3];
double[] numbers=new double[3];
方式二:通过{}直接赋值
int[] nums={1,2,3,4};
*:如何获取数组中元素的个数?
解析:length
*:通过for循环逐个遍历数组中每个元素,然后输出
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
04购物金额结算
05.数组排序
如何对一些列数字进行降序排列??
解析:sun公司并没有提供一个方法专门用于降序排列,但是我们可以转换
一下思路,先对数组中元素进行升序排列,然后降序输出数组中元素。
031.补充问题:
在我们自己的类中,可以对多个系统类进行导入使用。例如可同时使用Arrays和Scanner
06.打擂比较算法
07.插入算法(专题来讲)
两套代码:
Eg1:
public static void main(String[] args) {
// 我有一个按照升序排列的int类型数组
//现在我想将35扔到该数组中,但是得保证整个数组依然是升序排序
int[] nums={10,20,30,40};
int insertNum=25;
//01.打印原数组的内容
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+"\t");
}
//先大笑三声,终于出错了
//怕的是你想让程序,
System.out.println("");
//01.定义一个长度为原数组长度+1的数组
int[] newNums=new int[nums.length+1];
//02.将旧数组的第i项的值赋值给新数组
for (int i = 0; i < nums.length; i++) {
newNums[i]=nums[i];
}
//_10__ __20__ _30__ __40__ __0__
//03.找位置
int index=newNums.length-1;//应该将35扔到什么位置
for (int i = 0; i < newNums.length; i++) {
if(newNums[i]>insertNum){
//当前的i就是我要找的位置
//所以我将i的值赋值给index偷偷记录起来
index=i;
break;
} //[3]
} //35
//_10__ __20__ _30__ __40__ __0__
//04.元素后移,但是需要倒着移,将[i-1]的值赋值给第[i]
for (int i = newNums.length-1; i >index; i--) {
newNums[i]=newNums[i-1];
}
//05.给index位置重新赋值
newNums[index]=insertNum;
for (int i = 0; i < newNums.length; i++) {
System.out.print(newNums[i]+"\t");
}
}
Eg2:字符串相关
//插入算法
String[] songs={"Island", "Ocean", "Pretty", "Sun"};
for (int i = 0; i < songs.length; i++) {
System.out.print(songs[i]+"\t");
}
System.out.println("");
String insertSong="zoo";
//01.定义一个新数组,长度=旧数组长度+1
String[] newsongs=new String[songs.length+1];
//02.循环赋值
for (int i=0;i<songs.length;i++) {
newsongs[i]=songs[i];
}
//03.找位置
int index=newsongs.length-1;//找的位置
for (int i = 0; i < newsongs.length-1; i++) {
//半年时间理解一句话::
//如果一个对象是null,那么是不能使用它的任何属性和方法的
if (newsongs[i].compareToIgnoreCase(insertSong)>0) {
index=i;
break;
}
}
//04.循环后移,倒着移
for (int i = newsongs.length-1; i >index; i--) {
newsongs[i]=newsongs[i-1];
}
//05.重新给index位置赋值
newsongs [index]=insertSong;
for (int i = 0; i < newsongs.length; i++) {
System.out.print(newsongs[i]+"\t");
}
作业:1.日记本
2.第八章预习(排序,打擂算法 ,插入算法)
3.第七章项目
4.上机练习1和2
3.我认为读书、首先要思考,要深入地思考。不思考,读书读多少遍也没有用。铅笔、纸,我个人认为都是读书时,非常重要的条件。阅读到一定阶段,就会思考,就会形成不同的主题。 随之,就会进行主题阅读。要学会有效地,系统地进行知识的连接。从不同的角度去创造性地思考问题。
4. 我平时工作很忙、下班后很累,回家后就想休息。我如何解决这种局面、首先要积极主动地去思考。不要让自己的每一天,平平淡淡地度过。自己主动地、持续地去创造一些幸福快乐的时刻、巅峰的时刻。 不要让自己的每一天碌碌无为。我的改进方法是,下班后,抽出一个小时去跑步,感受运动的巅峰时刻。这样下班后,就不很疲劳。学习、工作、休息就会非常有效率。
5. 没有时间来学习。 就学习本身而言,始终是最重要的事情,当然学习的方式,有很多种。 多反思,多问“为什么”,往往会找到问题的答案。我在使用番茄钟工作法之前,上班很累,效率很低,加班很多。使用番茄钟工作法之后,加班逐渐地少了。
6. 要学以致用,学习有目标,我在敏捷个人的年度回顾中曾提到了,像游泳时的状态,不游就会掉下去。没有目标就是这种情况。更具体的目标,就是我们面临的一个个的具体的问题。
第九章 二重循环
第九章 二重循环
01.数组中插入元素的思想
关键是步骤必须清楚
001.将旧数组中每个元素复制到新数组中
002.找位置:找到用户输入的歌曲song应插入的位置
核心思想:将旧数组中第i项的值与song对比,如果
大于0,那么证明该位置(index)就是我们要找的位置。
003.index之后的元素后移,这里要注意,循环必须倒序执行。
一定要注意循环条件,避免数组下标越界。
004.给index位置赋值为song
02.二重循环
1.直角三角形
*
**
***
****
*****
*号(j) 行号(i)
1 1
2 2
3 3
for(i=1;i<=3;i++){
for(j=1;j<=i;j++){
System.out.print("*");
}
System.out.println("");
}
*
***
*****
*******
*********
i(行号) j(*号个数)
1 1
2 3
3 5
4 7
5 9
j=2*i-1
*****
****
***
**
*
i(行号) j(*号个数)
1 5
2 4
3 3
4 2
5 1
i+j=6
j=6-i
等腰三角形
*
***
*****
*******
*********
for(int i=1;i<=5;i++){
//第一个循环控制空格
for(int j=1;j<=5-i;j++){
System.out.print(" ");
}
//第二个循环控制*号
for(int k=1;i<=2*i-1;k++){
System.out.print("*");
}
System.out.println("");
}
解决问题的核心就是求i和j的关系
行数(i) 空格数(j) 星号(k)
1 4 1
2 3 3
3 2 5
4 1 7
5 0 9
i和j,i和k的关系
j=5-i
k=2*i-1
菱形打印
*
***
*****
*******
*****
***
*
解决问题的核心就是求i和j的关系
行数(i) 空格数(j) 星号(k)
i和j的关系
*****
***
*
***
*****
在二重循环中,如果内层循环中有break关键字,那么她只能跳出当前循环,不能跳出外层循环。
*********
* *
*********
第十一章 类和对象
第十一章 类和对象
1.什么是对象?
解析:是不是对面有一个美女你“狂敲键盘”就是面向对象编程呢??
真正的对象:在现实的生活中,你肉眼能看的见或者摸得着的所有的物体都可以看成是对象,但是
判定是对象还是类有一个核心点,就是
*对象是能唯一区别于其他事物的一个个体
2类的概念:
具有相同属性(静态特征)和行为(操作)的一系列事物的统称。
3.类和对象的关系
解析:类是对象的模板,对象是类的实例
解析:public class Student{
//内容
public String name;
public int age;
public String address;
//方法
public void SayHello(){
System.out.println("早上好!");
}
}
规范:在java中,定义类必须首字母大写。
3.如何创建一个类的对象?
解析:Student stu=new Student();
stu.name="张靓颖";
stu.age=100;
stu.address="北京某地";
stu.SayHello();
4.大家眼中的对象是神马???
解析:”另一位“,”客户“
你自身 ,一个水杯 ,显示器,
5.对象:现实生活中,能看得到,摸得着的有区别于其他事物独有特征的东西我们就可以称之为对象 。
每一个对象都有自身特有的特征,这些特征包括动态和静态两个方面。
动态就称为操作(方法) ,静态特征就称为属性。
6.Java,C#都是面向对象的语言,C语言面向过程
7.登陆:十一
注册
购物车添加商品 9.5
订单形成
8.oo:Object
oop:Object Oriented Programming,OOP,面向对象编程
OOD:Object Oriented Designer:面向对象设计
架构师
分析师
小胖:12306购票的车次查询
小张:12306购票的网上支付功能
数值类型数据赋值图
数组赋值图
04.所有的类名首字母都要大写
第十二章 类的无参方法
1.定义方法的语法:5要素
访问修饰符 返回值 方法名(参数){
方法体
}
2.如果在同一类中,那么方法A调用方法B,直接通过方法名就可以调用。
如果在类A中,想要调用类B中的方法say(),那么需要先创建出类B的对象,然后调用。
2.局部变量和成员变量
作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
初始值不同
Java会给成员变量一个初始值
Java不会给局部变量赋予初始值
3.JavaDOC
讲解要点:JavaDoc能够从源代码中抽取类、属性、方法等的注释,形成一个配套的API帮助文档。使用Eclipse生成JavaDoc文档注释有两种方法:
1.使用命令行方式生成
javadoc -d doc -subpackages mine
参数 说明
-d 指定API文档的输出目录,默认是当前目录。建议总是指定该参数。
-sourcepath 指定源代码路径,默认是当前目录。 此参数通常是必须的。
-subpackages 以递归的方式处理各子包。关键参数!如果不使用本参数,每次只能处理一个子包(或需手工列出所有子包)。
再加上-author才输出对应的作者信息
注:以上示例要求 javadoc.exe 所在路径位于系统环境变量“PATH”中。
支付宝:接口
支付宝做方法定义 的
二流的公司,做方法调用
作业环节
01.第十四章和第15章预习
02.课后作业题
03.日记
04.Blog文章,下次听写带返回值的方法
第十三章 人机猜拳系统
第十三章 人机猜拳系统
1.项目概述
由于这是大家第一次接触项目,希望每个人都能做到问心无愧。认真,仔细的对待这次项目。还有,希望大家能将每一次课后作业和上机练习都看做是在做一个项目 。
2.项目参与者图解分析
3.人机猜拳运行效果图
4.思路分析:
1.写一个电脑类(Computer)
要点:属性
01.电脑昵称 name
02.电脑得分 score
方法
01.机器出拳 showFist()
关键点:
01.生成1到3的随机数
方法一:int result=(int)(Math.random()*10)%3+1;
方法二:引入Random类
import java.util.Random;
Random random=new Random();
int ran=random.nextInt(3)+1;
02.用switch判断生成的随机数
如果为1:剪刀
如果为2:石头
如果为3:布
default:未知错误
这里不用考虑输入其他数字的情况,
因为数字不是用户输入的,而是
通过随机数生成的,只能是1,2,3
03.最后需要将选择的值返回
2.写一个玩家类(Person)
要点:同上
但是要注意一点:此时switch中是用户输入的值,要做
对应的处理,如果用户输入错误,
让用户循环输入
3.写一个裁判类
要点:01. Person person;//用户
Computer computer;//电脑
int count;//对战次数
//对值进行初始化
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
02.绘制游戏菜单
001.先调用初始化方法initial
002.然后绘制菜单
System.out.println("---------欢迎进入微冷的雨猜拳系统---------");
System.out.println("\n\t\t******************");
System.out.println("\n\t\t***游戏开始了 ********");
System.out.println("\n\t\t******************");
System.out.println("出拳规则:1.剪刀2.石头3.布");
//选择对方角色
System.out.print("\n请选择对方角色(1.刘德华2.周星星3.巩俐):");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
003.保存用户选择的角色,赋值给computer类的name属性
004.分别调用机器和玩家的出拳方法,然后对出拳结果比较,
005.显示比赛结果(之前先要计算比赛结果)
4.调用裁判类输出结果
第十四章 带参方法
第十四章 带参方法
00.带参方法的语法
public int say(String name){
}
01.调用带参方法时,有哪些注意事项?
解析:实参类型,数量,顺序必须与形参(方法定义中的参数)一致。
Public class Student{
Public void say(String name ,int age){
}
}
Public class MyMain(){
Pulbic static void main(String[] args){
Student stu=new Student();
Stu.say(“李小龙”,20);
}
}
02.包的作用是什么?
解析:为了避免命名冲突,为了更好组织类,方便查找。
包的用途:1.方便管理
2.快速检索
3.避免冲突
03.带参方法案例
//单行注释Ctrl+/ 多行注释:Ctrl+Shift+/ 取消多行注释:Ctrl+Shift+\
添加学生 :带一个参数的方法
显示学生信息 无参
按区间查询学生信息 3个参数()
修改学生信息 2个参数(String oldName,String newName)
数组作为参数
对象(自定义类型作为参数)
Null是不能调用它的任何属性和方法的
包
如果包a中有一个类Student,想要在包b中使用Student类,必须加上导包语句
Import a.Student;
第十五章 字符串
第十五章 字符串
01.如何定义一个字符串?
解析:String name="张靓颖";
String name2=new String("巩俐");
02.字符串常用方法
01.length():返回一个字符串中的字符总个数
案例:
String word="我爱北京天安门, 我爱中国毛爷爷";
//统计word中的字符总个数
System.out.println("长度是"+word.length());
02.equals():判定两个字符串存储的内容是否一致,如果相同,返回true。
String name="001";
String name2="001";
if (name.equals(name2)) {
System.out.println("equals");
}else {
System.out.println("不相等");
}
//输出equals
03.equalsIgnoreCase():忽略大小写。
Scanner input = new Scanner(System.in);
while(true){
System.out.print("请输入用户名:");
String name = input.next();
System.out.print("密码:");
String mima = input.next();
if(name.equalsIgnoreCase("Tom")&&mima.equals("1234")){
System.out.println("登陆成功");
}else{
System.out.println("登录失败");
}
}
04.toLowerCase():将一个字符串全部转换成小写。
05.toUpperCase():将一个字符串全部转化成大写。
06.name.conCat(String str):
作用:将str拼接到name变量上,形成一个大字符串返回。
String wordLeft="今天看到很多人都倒下了";
String wordRight="死很容易,活着很难";
String result=wordLeft+wordRight;
//方式二:
String result2=wordLeft.concat(wordRight);
System.out.println(result2);
07.substring(int beginIndex)
参数:从第几个位置开始截取,从0开始数,一直街取到字符串结束
返回值:截取后的内容
案例:
String name=”中国是一个伟大的国家”;
String result=name.substring(8);
Substring(int beginIndex,int endIndex)
参数一:从字符串的第几个位置开始截取,从0开始数
参数二:截取到第几个位置结束 ,从1开始数
案例 :
String name="中国是一个伟大的国家,我爱你";
//我想得到:”我爱你“ "国家"
String result=name.substring(8,10);
System.out.println(result);
08.indexof(“字符串”)获取一个特定字符串在大字符串中的位置。
参数:传入一个字符串
返回值:传入的字符串在大字符串中的位置。
案例 :
String name=“yymqqc@126.com”;
Int index= Name.indexof(”@”);
09.lastIndexof(“要查找的字符串”):返回最后一次出现某个字符串的位置
10.trim():只能移除两端的空格,中间的空格无法移除
11.Split(“分割符”)
返回的结果是一个字符串数组
如何定义一个StringBuffer类的对象?
StringBuffer sb=new StringBuffer;
System.out.println("欢 迎 使 用 迷 你 DVD 管 理 器");
System.out.println("-------------------------------------");
System.out.println("0. 借出排行榜");
System.out.println("1. 新 增 DVD");
System.out.println("2. 查 看 DVD");
System.out.println("3. 删 除 DVD");
System.out.println("4. 借 出 DVD");
System.out.println("5. 归 还 DVD");
System.out.println("6. 退 出 ");
System.out.print("--------------------------------------\n");
System.out.print("请选择: ");
Scanner input = new Scanner(System.in);