Java学习笔记 03、选择、循环结构

简介: Java学习笔记 03、选择、循环结构

一、Scanner使用


Scanner是java.util下的一个工具类


通过Scanner我们可以让程序接收到我们输入的值,实例化方式为:Scanner scanner = new Scanner(System.in);


可以通过这个Scanner实例调用方法来从键盘中获取指定类型的数据,获取基本类型如下:


int:scanner.nextInt()

String:scanner.next()

boolean:scanner.nextBoolean()

char:暂时没有指定方法获取到char类型,不过可以现获取到String类型,再使用其charAt(pos)获取pos位置的单个字符。

注意:当输入不匹配时,会抛出InputMismatchException异常,程序会直接终止!!!



二、选择结构


if
if else 可以嵌套进行。
语法格式:
//单if结构
if(boolean){
    ...
}else{
    ...
}
//嵌套if
if(boolean){
    ...
}else if(boolean){
    ...
}else if(boolean){
    ...
}


执行顺序由上至下,判断条件必须是boolean类型,在Java中int与boolean类型并不相同。



switch

根据表达式来进行由上至下执行选择


语法格式:


switch(表达式)
{
  case 常量1:
    break;
  case 常量2:
    break;
  default:
        break;
}


表达式:char、 byte、 short、int、 Character、Byte、 Short、 Integer、enum(枚举类型,JDK5.0新增), String(JDK7.0新增)


case之后:只能声明单个常量,不能声明范围。


default:若是没有符合条件的case话,会执行default下内容,若是符合条件的case就不会执行default下内容了。


break:若是某个case符合表达式的话,如果该case下没有break会继续向下面case执行(无论这个case是否成立);若是有执行完符合条件的case就结束switch。


switch (1)
{
    case 1:
        System.out.println(1);
    case 2:
        System.out.println(2);
        break;
    default:
        System.out.println("default");
        break;
}
//结果为下面:


总结


凡是可以使用switch-case结构的情况都可以使用if-else,而能够使用if-else情况并不一定能够使用switch。

当写分支结构时,若是取不同情况较少并且可以使用if与switch结构时,优先选择switch。(switch-case结构执行效率稍高一些)

if结构更加简便易用,根据情况去进行选择。


三、循环结构


包含while、do-while、普通for循环、foreach(增强for循环,JDK5.0)


知道循环次数的使用for循环而不是while循环。


while语法:
while(布尔值){
    ....
}


do-while语法:
do{
    ...
}while(布尔值)


for循环:
for(赋初值;判断条件;赋值加减){ 
    执行语句 
}


foreach:很容易逐个运行数组或其他集合(collection)的元素
for(元素类型type  元素变量value : 遍历对象obj) { 
}


说明:这里只是简单列出语法,不做过多描述。



四、break、continue与label


基本介绍


break:直接结束最近的循环。


continue:直接结束本次循环,若是continue下有内容直接跳过,开始下一次循环。


label:在指定部分前添加label表示为标记,并且可以使用break与continue搭配label标签进行快速跳出,如c++的goto有点像。



实际案例:求出1-10000中的质数个数


质数:一个数的因数只有一和它本身,这样的数叫做质数


方式一:普通做法


boolean flag;
int count = 0;
for (int i = 2 ;i< 10000;i++){
    flag = true;
    for(int j = 2;j<i;j++){  //遍历2-i中的所有情况,看是否能够进行约分
        if(i%j == 0)
            flag = false;
    }
    if(flag && i!=1)
        count++;
}
System.out.println(count);//1229


方式二:使用break提前结果


int j = 0;
int count = 0;
boolean flag;
for (int i = 2 ;i<= 10000;i++){
    flag = true;
    for(j = 2;j<=Math.sqrt(i);j++){ //优化一:范围缩小根号2
        if(i%j == 0){
            flag = false;
            break;//优化二:直接结束循环
        }
    }
    if(flag)
        count++;
}
System.out.println(count);//1229


方式三:continue配置label直接结束最外层循环


int count = 0;
int j;
label:for (int i = 2 ;i<= 10000;i++){
    for(j = 2;j<=Math.sqrt(i);j++){
        if(i%j == 0)
            continue label;
    }
    count++;
}
System.out.println(count);//1229


说明:直接不需要布尔值来进行判断,当只要有约分情况直接continue到指定label标签,原本continue只能结束本次最近的循环,在这里可以直接跳到最外层循环。


相关文章
|
6月前
|
Java
Java 循环结构
4月更文挑战第9天
Java 循环结构 - for, while 及 do...while
Java 循环结构 - for, while 及 do...while
|
2月前
|
Java
java基础(2)循环语句for、while、do...while
本文介绍了Java中的基础循环语句,包括for循环、while循环和do...while循环。文章通过示例代码展示了for循环的基本结构和用法,while循环的先判断后执行逻辑,以及do...while循环的先执行后判断逻辑。这些循环语句在Java编程中非常常用,用于执行重复的任务。
45 4
java基础(2)循环语句for、while、do...while
|
6月前
|
Java
Java中的循环结构详解
Java中的循环结构详解
125 1
|
6月前
|
Java 数据处理
Java中do…while循环语句
Java中do…while循环语句
78 3
|
6月前
|
Java
Java中while循环语句
Java中while循环语句
39 0
|
6月前
|
Java 数据挖掘
Java基础&循环语句
Java基础&循环语句
38 0
|
Windows
JAVA_while 循环结构
JAVA_while 循环结构
42 1
|
Java 编译器
JAVA_for+do...while循环结构
JAVA_for+do...while循环结构
48 1
|
Java
【Java】循环结构
【Java】循环结构
172 0
【Java】循环结构
下一篇
无影云桌面