流程控制
流程控制
JavaDoc
-
javadoc命令是用来生成自己api文档的
-
参数信息如下:
- @author 作者名
- @version 版本名
- @since 知名需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
/** * @author xiaoqiu * @version 1.0 * @since 1.8 */ public class Doc { String name; /** * * @param name * @return String * @throws Exception */ public String getName(String name) throws Exception { return name; } }
使用cmd生成JavaDoc文档:
生成一个新的index.html文件 打开为:
使用idea生成Doc文档:
用户交互Scanner
java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入
基本语法:
Scanner Sc=new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们用hasNext()和hasNextLine()判断是否还有输入的数据。
例:
//创建一个扫描器对象,用于接受键盘数据
Scanner Sc = new Scanner(System.in);
System.out.println("使用next方式接受:");
//判断用户有没有输入字符串
if (Sc.hasNext()) {
String Str=Sc.next();// 程序会等待用户输入完毕
System.out.println("输入的内容为:"+Str);
}
Sc.close();
输出数据为:
注意事项:
凡事属于io流的类如果不关闭会一直占用资源,用完就需要关闭。
使用nextline来接受数据:
Scanner Sc = new Scanner(System.in); //创建一个扫描器对象,用于接受键盘数据
System.out.println("使用nextline方法接收");
//判断是否还有输入
if (Sc.hasNextLine()) {
String s = Sc.nextLine();
System.out.println("输出的内容为:"+s);
}
Sc.close();
输出结果为:
next和nextline的区别
next:
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符前遇到的空白,next方法会主动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
- next不能得到带有空格的字符串
nextline
- 以Enter为结束符,也就是说nextline方法返回的是输入回车之前的所有字符
- 可以获得空白
例:
double sum =0; //创建一个double类型的数据sum用于存储数据的和
int n =0;//创建一个int类型的数据n用于存储输入的数据个数
double ave=0;//创建一个double类型的数据ave来存储数据的平均数
Scanner Sc = new Scanner(System.in); //创建一个扫描对象用于接受输入的数据
while(Sc.hasNextDouble()){ //判断输入的数据是否为数字 如果是则执行循环体内的内容 如果不是则结束
n++;
sum=sum+Sc.nextDouble();
ave=sum/n;
}
System.out.println("输入的数和为:"+sum+"\n输入了"+n+"个数"+"\n平均数为:"+ave);
Sc.close();
测试结果如下所示:
顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 语句和语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
选择结构
if单选择结构
- 当我们需要判断一个东西是否可行,然后再执行,这样的一个过程在程序中用if语句来表示
- 语法:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
if双选择结构
- 我们判断的时候存在两种情况并且每种情况对应的处理方法不同,这样的过程在程序中 if-else语句来表示
- 语法:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}else{
//如果布尔表达式为false将执行的语句
}
if多选择结构
- 当我们存在多种情况并且每种情况对应不同的处理方式的时候我们在程序中可以采用 if-elseif-else语句来处理
- 语法:
if(布尔表达式a){//当布尔表达式的值为a时的执行语句}
else if(布尔表达式b){//当布尔表达式的值为b时的执行语句}
else if(布尔表达式c){//当布尔表达式的值为c时的执行语句}
else if(布尔表达式d){//当布尔表达式的值为d时的执行语句}
........
else{//当布尔表达式的值不存在时的执行语句}
例:
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的分数");
int score = sc.nextInt(); //创建一个扫描器来获取输入的内容
if(score<60&&score>=0){ //if判断语句 多种情况对应多种处理方式
System.out.println("你的成绩为E");
}
else if (score>=60&&score<70) {
System.out.println("你的评价为D");
}else if (score>=70&&score<80){
System.out.println("你的评价为C");
}else if (score>=80&&score<90){
System.out.println("你的评价为B");
}else if (score>=90&&score<=10){
System.out.println("你的评价为A");
}else { //除去以上所有情况后的处理语句
System.out.println("你的输入有误!");
}
sc.close();
测试结果如下所示:
总结:
if语句至多有一个else语句,else语句在所有的elseif语句之后,if语句可以有若干个elseif语句,他们必须在else语句之前,一旦其中的一个elseif语句检测为true,其他的elseif和else语句都跳过执行。
嵌套的if结构
if循环体中还可以嵌套多个if循环
语法:
if(布尔表达式1){//如果布尔表达式1为true 执行代码
if(布尔表达式2){
//如果布尔表达式2为true执行代码
}
}
switch多选择结构
switch case语句判断一个变量与一系统值中某个值是否相等,每一个值称为一个分支。
switch 语句中的变量类型可以是:byte.short.int.char,并且从JavaSe 7开始 switch支持子副创String类型了,同时case标签必须为字符串常量或者字面量
语法:
switch(expression){
case value:
//语句
break; //可选
case value:
//语句
break; //可选
default://可选
//语句
}
循环结构
while循环
- 只要布尔表达式为true,循环就会一直执行下去
- 我们大多啥情况都需要让循环停下来,我们需要一个让表达式失效的方式来结束循环
- 少部分情况需要循环一直执行,比如服务器的请求响应监听
- 循环条件一直为true会造成无限循环也就是死循环,我们正常的业务编程中应该尽量避免死循环,会影响程序性能或者造成程序卡死崩溃
- 语法:
while(布尔表达式){
//循环内容
}
例:计算1+2+3+...+98+99+100
int n=0;//定义一个整数n用于存储数据个数
int sum=0;//定义一个整数sum用于存储数据和
while (n<=100){ //当加数不大于100时执行循环体内容
sum=sum+n;
n++;
}
System.out.println(sum);
do....while循环
- 对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
- do...while循环和while循环相似,不同的是,do....while循环至少会执行一次
- 语法:
do{
//代码语句
}while(布尔表达式)
while和do-while的区别:
- while先判断后执行,do-while是先执行后判断。
- do-while总是保证循环体至少执行一次。
for循环
- 尽管很多循环结构都可以用while或者do-while来表示,但java提供了另外一个语句-for循环,使一些循环结构变得更加简单
- for循环语句是支持迭代的一种通用结构,是最后有效,最灵活的循环结构
- for循环的执行次数是在执行前就确定了的,语法格式如下:
for(初始化,布尔表达式;更新){
//代码语句
}
例:9*9乘法表
for (int i = 1; i < 10; i++) {//首先取出第一个数i 表示第一位乘数
for (int j = 1; i >=j; j++) { //然后取出第二位数字为j 避免产生重复单元 约束为i<=j
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
测试结果如下:
增强for循环
- java5引入了一种主要用于数组或集合的增强型for循环
- 语法格式如下:
for(声明语句:表达式){
//代码句子
}
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等
- 表达式:表达式是要访问的数组名,或者是返回值为数组的方法
break&continue
- break在任何循环语句的主体部分,均可用于break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
- continue语句用在循环句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断
- goto:1. goto关键字很在就在程序设计语言中出现,尽管goto任然是就java中的一个保留字,但并未在语言中得到正式的使用,java没有goto,然而在break和continue这两个关键字身上,我们依然能看出一些goto的影子,带标签的break和continue
- 标签是指后面跟一个冒号的标识符,例如:label;
- 对于java来说唯一用到标签的地方就是在循环语句之前,而在循环之前设置标签的唯一理由是我们希望在其中嵌套着另外一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,他们就会终端到其他存在标签的地方。