1.选择结构,循环结构与数组
1.1选择结构
选择结构从生活上来讲就是根据判断结果决定是否做一件事情,选择结构还包括了if选择结构和switch结构,接下来就让我来带大家了解这些选择结构的基本要素.
1.2 if选择结构
1.2.1什么是if选择结构
if选择结构时根据条件判断之后再做处理的一种语法结构。下面看一下最基本的if选择结构的语法. 如下
if(条件){
代码块 //如果上面的条件成立后就要执行的代码.
}
程序员执行是,先判断条件,当结果与条件一致的时候,程序就会先执行代码块,再执行if结构,当不一致的时候就不if{}里面的代码块,而是直接执行if结构后面的代码.
接下来看一下如何敲出来.
public class Demo{
public static void main (String[]args){
//语句1;
//语句2;
if(条件){
//语句3;
}
//语句4;
}
}
这就是基本的if选择结构的构图了,程序开始执行后,首先执行语句1和语句2,如何对条件进行判断.如果条件成立,则执行语句3,然后跳出if结构块执行语句4;如果不成立,则语句3不执行,直接执行语句4。
介绍完if选择结构的基本框架就给大家介绍下流程图.
流程图:就是能逐步解决指定问题的步骤和方法的一种图形化表示方式.每一种图形都代表不同的意义,接下来给大家看看这些图形的意义是什么.
图形 | 意义 | 图形 | 意义 |
---|---|---|---|
圆矩形 | 程序开始或结束 | 菱形 | 判断和分支 |
矩形 | 计算步骤/处理符号 | 箭头指向图形的线 | 链接符 |
平行四边形 | 输入/输出指令 | 箭头 | 流程线 |
1.2.2如何使用if选择结构
问题;如果张浩的java考试成绩大于98分,那么张浩就能获得一个MP4作为奖励.
这个问题是先判断条件,条件满足后再执行,所以需要用if选择结构来实现,那么接下来就来实现吧.
import java.util.Scanner;
public class Demo{
public static void main(String [] args){
Scanner input = new Scanner(System.in);
System.out.print("输入张浩的java成绩:") //提示输入java成绩
int score = input.nexInt(); //从控制台获取张浩的java成绩
if(score>98){ //判断是否大于98分如果大于就执行下面的代码块
system.out.println("老师说:不错,奖励一个MP4!")
}
}
}
编译运行后就可以看到输出了 输入张浩的java成绩:
如果输入大于98分就会输出 老师说:不错,奖励一个MP4!
否则就不会输出任何语句.
1.2.3使用复杂条件下的if选择结构
当一个问题需要判断的条件比较多的时候,就需要将多个条件链接起来,java中可以通过逻辑运算符链接多个条件.逻辑运算符如下。
运算符 | 汉语名称 | 表达式 | 说明 | 举例 |
---|---|---|---|---|
&& | 与,并且 | 条件1&&条件2 | 两个条件同时为真,则结果为真;两个条件有一个为真;两个条件为假,则结果为假 | 具有选举权的条件:年满18周岁&&中国公民.两个条件都为真则具有选举权有一个条件为假,则不具有选举权 |
|| | 或,或者 | 条件1||条件2 | 两个条件有一个为真,则结果微针;两个条件同时为假,则结果为假 | 从中国去美国的方式:乘飞机||乘船.两个条件有一个条件为真,就可以取美国;都为假,则去不了美国 |
! | 非 | !条件 |
问题,若果张浩的java成绩大于98分,而且音乐成绩大于80分,则老师奖励他;或者如果java成绩等于100分,音乐成绩大于70分,老师也可以奖励他.
这个问题就可以用到上面的逻辑运算符来实现了.
public class Demo{
public static void mian(String [] args){
int score1 = 100;//张浩的java成绩
int score2 = 72;//张浩的音乐成绩
if((score1>98&&score2>80)||(score1 ==100&&score 2>70)){
System.out.println("老师说不错,奖励一个MP4")
}
}
程序结果会直接输出
老师说:不凑奖励一个MP4;
1.2.4使用if-else结构
public class Demo{
public static void main(String [] args){
int score = 91;
if(score>98){
System.out.println("老师说:不错,奖励MP4一个!");
}
if(score<=98){
System.out.println("老师说:惩罚进行编码");
}
}
}
两个if选择机构看起来非常的麻烦,但是有一种语法可以很好的解决这种问题,就是if-else选择结构表示如果 就,否则 就. 语法结构如下.
if(条件){
//代码块1
}else{
//代码块2
}
这中语法就可以简单的实现上面的复杂的if选择结构;
public class Demo{
public static void main(String [] args){
int score =91;
if(score>98){
System.out.println("老师说:不错奖励一个MP4")
}else{
System.out.println("老师说:惩罚进行编码")
}
}
}
基本的if选择结构,只有一个if块;if-else选择结构,有if块和else块.
1.2.5如何生成随机数
生活上很多东西都需要用到随机数,比如你在购物上的订单和注册上给你的id都是由随机数产生的,接下来教大家如何定义一个随机数.
int random = (int)(Math.random()*10);
这就是定义随机数的代码了,
Math.random()的意思就是0-1的随机数 *了10以后就是0-10的随机数 由此推类.
1.2.6多重if选择结构
前面讲了if选择结构 else-if,接下来说手多重if选择结构,语法如下.
if(条件1){
//代码块1
}else if(条件2){
//代码块2
}else{
//代码块3
}
多重if的执行顺序就是 程序先判断条件1,如果成立了,就执行代码块1 然后就会跳出这个多重if选择结构,执行后面的代码 但是代码块2 和代码块3就不会执行了. 如果判断条件1不成立 就判断条件2 如果成立的话 就执行代码块2也是一样跳出这个选择结构,如果条件1和条件2都不成立 就直接执行代码块3. 接下来给大家来一个简单的多重if的代码.
public class Demo{
public static void main(String [] args){
int score = 70;
if(score>=80){
System.out.println("良好");
}else if(score >=60){
System.out.println("中等");
}else{
System.out.println("差");
}
}
}
程序结果输出为 70
1.2.7嵌套if选择结构\
嵌套if选择结构的意思就是在if选择结构里面在加一个if选择结构 流程图如下.
if(条件1){
if(条件2){
//代码块1
}else{
//代码块2
}
}else{
//代码块3
}
问题 学校举行运动会,百米赛泡泡成绩在10秒以内的学生有资格进决赛,根据性别分为男子组和女子组.
我们就可以用上面这个嵌套if选择结构来完成这个
import java.util.*;
public class Demo{
public static void main(String [] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入比赛成绩(s):");
double score = input.nextDouble();
System.out.println("请输入性别:");
String gender = input.next();
if(score<=10){
if(gender.equals("男")){
System.out.println("进入男子组决赛");
}else if(gender.equals("女")){
System.out.pritnln("进入女子组决赛!");
}
}else{
System.out.println("淘汰!")
}
}
}
这样敲就完成了.
if嵌套选择结构需要注意的问题:
只有当满足外层if选择结构条件时,才会判断内层if的条件.
else 总是在它前面最近的那个缺少else的if配对.
1.2.8总结
常见的逻辑运算符有&&,||,!
基本的if结构如下
ji选择结构:可以处理单一或组合条件的情况
if-else选择结构:可以处理简答的条件分支请.
多重if选择结构:可以处理连续区间的条件分支情况。
嵌套if选择结构:可以处理复杂的条件分支情况.
1.3.1Switch选择结构.
选择结构不仅仅只有if选择结构,它还有另外一种选择结构,叫做switch选择结构,接下来让我来给各位介绍swithc选择结构吧!
1.3.2什么是switch选择结构
switch选择结构可以更好地解决等值判断问题.它的语法如下.
switch(表达式){
case 常量1:
//代码块1;
break;
case 常量2:
//代码块2;
break;
default:
//代码块n;
break;
}
可能就这样直接敲出来可能大家都不懂那么我就解释下这里面的关键字把.
主要有 switch,case,break,default.
switch 表示的意思是开关,这个开关就是switch关键字后里表达式的值.
case:表示情形情况,case后面可以是int ,short,byte,char,String类型,通常是一个固定的值case 可以有多个,顺序可以不同 但常量不能不变.
default 表示默认,既其他情况都不满足.后面要有冒号,default和case的先后顺序可以变动,不会影响程序执行的结果.
break:表示"停止",既跳出当前结构.
1.3.3如何使用switch选择结构
说了这么多 ,接下来教大家如何使用吧,具体代买如下所示.
public class Demo{
public static void main(String [] args){
int mingci =1;
switch(mingci){
case 1:
System.out.println("参加麻省理工大学组织的一个月夏令营");
break;
case 2:
System.out.println("奖励惠普笔记本电脑一部");
break;
case 3:
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.pritnln("没有任何奖励");
break;
}
}
}
运行结果为 参加麻省理工大学组织的一个月夏令营.
可以发现 变量mingci为1 正好对应了case 1 与他匹配 所以就输出了参加麻省理工大学组织的一个月夏令营…
在switch中 省略break是可行的 但是会发生什么呢 让我来看看.
public class Demo{
public static void main(String [] args){
int mingci =1;
switch(mingci){
case 1:
System.out.println("参加麻省理工大学组织的一个月夏令营");
case 2:
System.out.println("奖励惠普笔记本电脑一部");
case 3:
System.out.println("奖励移动硬盘一个");
default:
System.out.pritnln("没有任何奖励");
}
}
}
可以看到运行结果为
参加麻省理工大学组织的一个月夏令营
奖励惠普笔记本电脑一部
奖励移动硬盘一个
没有任何奖励
总结break; break是可以省略的 但是省略后 switch的变量的值与case相匹配时 就会一直执行下面的case里的代码块 直到遇到break. 所以在编写switch选择结构的时候 不要忘记加上break;
1.4.1循环结构
学习了选择结构后 可以用它来解决逻辑判断的问题,但是在生活实际中 很多复杂的操作是选择结构做不到的 ,这时候我们就可以用到另一种结构-——循环结构.
1.4.2认识循环结构
在学习上 如果你犯了错 老师让你在控制台上输出几百遍相同的词组,这时候你总不可能一个一个的敲把,我们就要用到循环结构来解决这个问题。
今天小明迟到,被老师犯在控制台上输出1000遍不要迟到.小明灵机一动一瞬间就敲了1000遍不要迟到 ,他是怎么做到的呢?
public class Demo{
public static void main(String [] args){
int i = 1;
while(i<=1000){
System.out.println("不要迟到")
i++;
}
}
}
这样 小明就输出了1000遍不要迟到.
1.4.3while循环结构
刚刚的1000遍不要迟到就是while循环结构,但是循环结构可不止这一个,它还有do-while选择结构和for循环结构,我们先来了解while循环结构.语法如下;
while(循环条件){
//循环操作
}
这就是while循环结构的基本框架了.
while后小阔好中的内容是循环条件,它是一个表达式 如i<=100{}中的语句统称为循环操作,又称为循环体.
它的执行顺讯一般如下.
1.声明并初始化循环变量.
2.判断循环条件是否满足,如果满足则执行循环操作,否则退出循环.
3.执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循环.
总的来说while循环结构的一个特点:先判断,后执行.
1.4.4如何使用while循环结构
我们使用while循环结构来打印并计数50分卷子.代码如下.
public static void main(String [] args){
int count = 1;
while(count<=50){
System.out.println("打印第"+count+"份卷子");
count ++;
}
}
这样就会打印了第 1 份卷子 这样一直下去 知道 第50分卷子就会停止输出.
我们在前面学会了从控制台输入需要用到Scanner,但是如何将一个String类型的变量保存到里面呢,如下
answer = input.next();
保存String类型变量的时候是不要字next前面加任何东西的.
1.4.5程序调试
在Eclipse的复杂代码中 ,出一点小错误是很正常的 ,但是缺又很难找出来,这时候我们就可以用到debug来进行程序调试了.我们可以双击旁边的断点 然后进行单步执行(按f6)然后打开Variables 一次一次的查看变量的变化就可以查出来了.
顺序为
1.分析错误,设置断点
2,启动调试,单步执行.
1.4.6什么是do-while循环结构.
只用while来解决一些基本的循环已经不再合适了,有很多生活实际都是先判断再执行,这时候我们就需要用到do-while循环结构来解决问题,语法如下.
do{
//循环操作
}while(循环条件);
和while循环不同,do-while循环以关键字do开头 大括号里的是循环操作,接着才是while关键字和紧随的小括号括起来的循环条件,需要注意的是,do-while循环结构以分好结尾
1.声明并初始化循环变量/
2.执行一遍循环操作.
3.判断循环条件,如果循环条件满足,则循环继续执行,否则退出循环.
do-while循环的特点就是先执行再判断 而且至少执行一次.
1.5.1for循环
我们已经学习了while循环和do-while循环 还有最后一种循环 for循环,这是一种很常用的循环结构,接下来让我来带大家了解for循环.
1.5.2什么是for循环
循环语句的主要作用是反复执行一段代码,知道满足已订购的条件为止。总结一下,可以把循环结构分成四个部分.
初始部分:设置循环的初始状态,如设置记录循环次数的变量i为0/
循环体:重复执行的代码,即输出"不要迟到"
迭代部分:下一次循环开始前要执行的部分,在while循环结构中它作为循环体的一部分,如使用i++;进行循环次数的累加;
循环条件, 判断是否继续循环的条件,如使用i<100判断循环次数是否已经达到100.
1.5.3如何使用for循环.
讲了for循环的结构分成,那么接下来讲下如何使用for循环.就比如接下来这题,循环输入某同学的结业考试的五门课的成绩,并计算平均分
import java.util.*;
public class Deom{
public static void main(String[]args){
int score;
int sum = 0;
double avg = 0.0;
Scanner input = new Scanner(System.in);
System,out.println("请输入学生姓名:")
String name = input.next();
for(int i = 0;i<5;i++){
System.out.println("请输入5门功课中第+(i+1)+"门课的成绩");
score = input.nextInt();
sum = sum+score;
}
avg = (double)sum/5;
System.out.println(name+"的平均分是"+avg);
)
}
}
1.5.4countinue语句的使用
前面讲过了break语句是跳出循环,但是如果让你跳过本次循环不执行全部的循环体而执行下次循环要怎么做呢,这时候就需要用到我们的countinue语句了.
countinue主要就是跳出当前的循环执行下一次循环.
1.5.5循环总结
while循环结构:先进行条件判断,再执行循环体.如果条件不成立,退出循环.
do-while:先执行循环体,再进行条件判断,循环体至少执行一次.
for循环结构:先执行初始化部分,再进行条件判断,如何执行循环体,最后选行迭代部分的计算。如果条件不成立,跳出循环.
1.6.1数组
当你需要存储几十上百个人的值的时候,你总不能一个一个的存储把,这时候就需要用到数组了,
数组的基本要素有 标识符,数组元素,数组下标和元素类型, 数组只能有一个名称即标识符.
数组的位置下标是从0开始的 顺序为 0 1 2 3 4…
数组的长度是容纳元素的最大数量.如果超越了这个容纳元素的最大值就会报错而终止程序.
1.6.2如何使用数组
数组的基本语法有两种:
数据类型 [] 数组名;和数据类型 数组名[];
double height[];
String[] names;
这两种方式都可以
然后就是分配空间的语法.
数组名 = new 数据类型[数组长度];
scores = new int[30]‘
也可以将他合并起来就是这样
数据类型[] 数组名 = new 数据类型[数组长度];
列如
int scores [] = new int[30];
数组名.length;可以求得数组的长度.
累加的方式 利用for循环 然后在for循环前设置一个变量,然后进行累加 即
int max ;
for(i=0;i<=xxx.length;i++){
max = i+max
}
通过这样的方式就可以进行循环累加.
1.6.3如何进行排序
在生活实践中很多东西都是要进行对比排序的 就好比考试,跑步秒数进行排序对比.语法如下.
Arrays.sort();
但想要使用这个语法的前提是要进行打包如下
import java.util.Arrays;
这样就可以使用上面的排序了.
当然这种排序也只能对数字进行排序 ,要是出现字母的排序改怎么办呢?
就需要用到这样的语法;
if(musics[i].compareToIgnoreCase(music)>0){
index = i;
break;
}
1.6.4如何求数组中的最大值,
学会了排序也要学会求最大值,代码如下
先设定一个变量max
int max;
然后for循环
最后在用if进行比较判断,就可以比较出最大值了
max = scores[0];
if(a[1]>max)
1.6.5向数组中插入元素
当在一组存储的数组里再插入一个数的话改如何插入呢?
存储数组{99.85.82.63.60}然后增加一个数然后还要进行排序并输出.
import java.util.Scanner;
public class Demo{
public static void main(String [] args){
int[] list = new int[6];
list [0]=99;
list [1]=85;
list [2]=82;
list [3]=63;
list [4]=60;
int index = list.length;
System.out.println("请输入新成绩:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
for(int i =0;i<list.length;i++){
if(num>list[i]){
index = i;
break;
}
}
for(int j = list.length-1;j>index;j--){
list[j]= list[j-1];
}
list[index] = num;
System.out.println("插入成绩的下标是:+"+index");
System.out.pritnln("插入后的成绩信息是:");
for(int k = 0; k<list.length;k++){
System.out.println(list[k]+"\t")
}
}
}
这样就可以完成上面的问题了.
1.7.1循环结构进阶
前面我们讲了循环的三个基本框架,现在我就要说说进阶版的循环结构了,一起来看看吧.
1.7.2二重循环结构
我们之前学的三种循环结构 while ,do-while和for接下来我们就要学习他们的二重循环结构,简单来说就是在while,do-while,for任一个再嵌套进去一个中循环,下面这四种二重循环结构都是可行的.
while与while嵌套
while(循环条件1){
//循环操作1
while(循环条件2){
//循环操作2
}
}
do-while 与do-while循环嵌套
do{
//循环操作1
do{
//循环操作2
}while(循环条件2);
}while(循环条件1)'
;
for与for循环嵌套
for(循环条件1){
//循环操作1
for(循环条件2){
//循环操作2
}
}
while与for循环嵌套
while(循环条件1){
//循环操作1
for(循环条件2){
//循环操作2
}
}
上面四种形式中,循环条件1和循环操作1对应的循环称为外层循环,循环条件2和循环操作2的循环称为内层循环,内层循环结束后才执行外层循环的语句,在二重循环中,外层循环变量一次,内层循环变量要从初始值到结束值变化一遍.
1.8总结
到这里选择结构,循环结构和数组就已经讲完了,其实这些都是考验你的逻辑思维能力的,并不是很难的,只要愿意动动脑筋也是很容易的,也希望我说的这些能够帮助各位看官…