零基础入门学习Java课堂笔记 ——day02
流程控制
1.Scanner对象
来源:java.util.Scanner 我们可以通过Scanner类来获取用户的输入输出
用户交互Scanner
通过new关键词创建Scanner对象
Scanner input = new Scanner(System.in);
通过Scanner类判断用户是否输入,如果输入则读入一个单词的长度
import java.util.Scanner;
public class demo1 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//判断用户是否输入
if(input.hasNext()){
String str = input.next();
System.out.println(str);
}
//方式IO流使用完一定要关闭
input.close();
}
}
通过Scanner类判断用户是否输入,如果输入则读入一行的长度
import java.util.Scanner;
public class demo1 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//判断用户是否输入
if(input.hasNextLine()){
String str = input.nextLine();//获取一行
System.out.println(str);
}
//方式IO流使用完一定要关闭
input.close();
}
}
进阶用法
当我们要求输入整数、浮点数、字符串的时候Scanner可以过滤掉一些不是我们想要的东西
import java.util.Scanner;
public class demo1{
public static void main(String[] args){
//创建Scanner对象
Scanner input = new Scanner(System.in);
int i = 0;
float f = 0.0f;
if(input.hasNextInt()){ //判断是否为整数
i = input.nextInt();
System.out.println("Int:"+i);
}else if(input.hasNextFloat()){ //是否为浮点数
f = input.nextFloat();
System.out.println("Float:"+f);
}else{ //都不是的话....
System.out.println("Please write down float or int data.");
}
input.close();//关闭IO
}
}
import sun.awt.geom.AreaOp;
import java.util.Scanner;
public class demo1{
public static void main(String[] args){
//利用while循环 实现输入N个数字
// 计算总和以及平均数
Scanner input = new Scanner(System.in);
double total = 0.0;//存放总数的变量
int cnt = 0;//计数器
System.out.println("Please enter data:");
while(input.hasNextDouble()){ //判断是否输入
System.out.print("Please enter data:");
double temp = input.nextDouble();
cnt++; //计数器递增1
total += temp; //计算总和
}
System.out.println("average:"+total/cnt);
System.out.println("total:"+total);
input.close(); //关闭IO
}
}
2.顺序结构
Java的基本结构就是顺序结构,除非特别指明,否则按照顺序一句一句执行,任何一种算法都离不开这种基本算法结构!!!
3.选择结构
在很多时候程序需要判断一个东西是否可行,为了让程序具有分支能力,因此诞生了选择结构
if单选择结构
if(布尔表达式){
//为true的时执行这里
}
//下面还是按照顺序结构执行
if双选着结构
if(布尔表达式){
//为true的时执行这里
}else{
//反之执行这里
}
//下面还是按照顺序结构执行
if多选择结构
if(布尔表达式1){
//布尔表达式1 为true的时执行这里
}else if(布尔表达式2){
//反之 布尔表达式2为true执行这里
}else if(布尔表达式3){
//反之 布尔表达式3为true执行这里
}else{
//反之 执行这里
}
//下面还是按照顺序结构执行
注意:只要一个if else为true那么就会直接跳过其他if else
switch多选择结构
switch(expression){
case value1:
//语句
break;
case value2:
//语句
break;
default:
//语句
}
判断switch括号内部的变量是否为各个value 然后对号入座执行下方的语句知道遇到break,如果都没有对应的value就执行default下方的语句 注:break和default可选
switch语句中的变量类型可以是
- byte、short、int或者char
- 从Java SE 7开始可以支持String类型
- case标签必须表示字符串常量或者字面量
4.循环结构
while循环
如果布尔表达式为true就一直执行循环的内容 反之跳出循环
避免死循环
import sun.awt.geom.AreaOp;
import java.util.Scanner;
public class demo1{
public static void main(String[] args){
int i = 0;
while(i<101){
System.out.println(i);
i++;
}
}
}
import sun.awt.geom.AreaOp;
import java.util.Scanner;
public class demo1{
public static void main(String[] args){
int sum = 0;
int i = 0;
while(i<101){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
do...while循环
即使不满足条件也要让循环至少执行一次
import sun.awt.geom.AreaOp;
import java.util.Scanner;
public class demo1{
public static void main(String[] args){
int sum = 0;
int i = 0;
do{
System.out.println("我知道条件不符合 但我还是循环了一次");
i++;
}while (i<-1);
System.out.println("i是"+i);
}
}
do..while先执行后判断 while先判断后执行
import sun.awt.geom.AreaOp;
import java.util.Scanner;
public class demo1{
public static void main(String[] args){
String str = "";
int i = 2;
while(i<0){
System.out.println(i);
str = "while";
}
do{
System.out.println(i);
str = "do while" + str;
}while (i<-1);
System.out.println(str);
}
}
for循环
for循环会先对其设置好的变量就行初始化,然后判断是否符合条件如何符合条件就执行代码块,如果不符合条件就跳出循环,每次循环结束都会迭代
public class demo1{
public static void main(String[] args){
//for(初始化;条件判断;迭代)
for(int i=1;i<10;i++){
//代码块
System.out.println(i);
}
}
}
for-each循环
主要是用来遍历数组和集合 的增强for循环
public class demo1{
public static void main(String[] args){
int[] number = {10,20,30,40,50};
for(int item:number){
System.out.println(item);
}
}
}
练习题
test1:计算0~100之间偶数和奇数和
test2:用while或者for循环输出1~1000之间能被5整除的数每行输出3个
test3:打印九九乘法表
import sun.awt.geom.AreaOp;
import java.util.Scanner;
public class demo1{
//计算0到100之间的奇数和偶数的和
static void test1(){
int oddNumberTotal = 0; //奇数
int evenNumberTotal = 0; //偶数
for (int i = 0; i < 100; i++) {
if(i%2 == 0){ //判断是否为偶数
//System.out.println(i);
evenNumberTotal+=i;
}else{
oddNumberTotal+=i;
}
}
System.out.println("oddNumberTotal:"+oddNumberTotal);
System.out.println("evenNumberTotal:"+evenNumberTotal);
}
//用while或for循环输出1~1000之间能被5整除的数 每行输出3个
static void test2(){
for (int i = 0,cnt = 0; i < 1000; i++) {
if(i%5 == 0){ //判断是否为5的倍数
System.out.print(i+"\t");
cnt++; //打印个数递增
}
if(cnt == 3){ //当打印个数为3个时
System.out.println(""); //打印换行符
cnt = 0;//重置个数计数器
}
}
}
//打印九九乘法表
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
*/
static void test3(){
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
//没啥好说的 注意j小于等于i
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println("");
}
}
public static void main(String[] args){
System.out.println("======================>习题1");
test1();
System.out.println("======================>习题2");
test2();
System.out.println("======================>习题3");
test3();
}
}
5.break continue
break:可用于任何循环流程,主要作用是强制退出循环
public class demo1{
public static void main(String[] args){
for(int i=1;i<10;i++){
//代码块
System.out.println(i);
if(i == 5){
System.out.println("阎王让你三更走 绝不留你到五更");
break;
}
}
}
}
continue:用来终止某次循环,跳过未执行的语句,但相当于提前结束一次循环
public class demo1{
public static void main(String[] args){
for(int i=1;i<10;i++){
//代码块
if(i == 5){
System.out.println("让你输出了?");
continue;
}
System.out.println(i);
}
}
}