1. 用户交互Scanner
1.1 Scanner对象:
- ?? Java提供的一个工具类,利用Scanner类可以获取用户的输入。
- ??? java.util.Scanner是java5新特性
1.2 基本语法
Scanner scanner = new Scanner(System.in);
类 对象名(随便)
Scanner scanner = new Scanner(System.in);
......
scanner.close();
1.3 注意
??????? 通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前通常会使用hashNext()与hashNextLine()判断是否还有输入的数据
示例:
package Lckz;
import java.util.Scanner;
public class Demon01 {
public static void main(String[] args) {
//创建一个扫描器对象 用于接收键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户是否输入字符串
if(scanner.hasNext()){
//使用next方式接收
String str = scanner.next(); //程序会等待用户输入完毕
System.out.println("输出的内容为: "+str);
}
//凡是属于IO流的类一定要记得关流操作
//如果不关闭就会一直占用资源,要养成好的习惯用完就直接关掉
scanner.close();
}
}
package Lckz;
import java.util.Scanner;
public class Demon02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收: ");
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出的内容为: ");
}
scanner.close(); //关流操作
}
}
?==================================================================== ????????????????????????????
???????????????????????????? next()方法和nextLine()方法对比:有什么区别?
总结如下:
????????next():
- 一定要读取到有效字符才可以结束输入。也就是必须的输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 例如:Hello World 输出Hello
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串。空格之后的就直接删了
????????nextLine()
- 以Enter作为结束符,即:nextLine()方法返回的输入回车之前地 所有字符
- 可以获得空白。
其他用法:
??? scanner.nextInt()????????????? scanner.nextFloat()
2. 顺序结构
?????? 自从而下 太简单
3. 选择结构
?? 3.1 if单选结构??
语法:
if(布尔表达式){
如果为真,执行的语句
}
?? 代码示例:
????????
package struct;
import java.util.Scanner;
public class ifDemon01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容");
String s = scanner.nextLine();
if (s.equals("hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
? 3.2 if双选结构
if(布尔表达式){
语句A; //布尔表达式的值为true
}else{
语句B; //布尔表达式的值为false
}
?? 代码示例:
package struct;
import java.util.Scanner;
public class ifDemon02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩");
int score = scanner.nextInt();
if (score>60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
3.3 if多选择结构
语法:
if(布尔表达式1){
如果1为真,执行语句A
}else if(布尔表达式2){
如果2为真,执行语句B
}else if(布尔表达式3){
如果2为真,执行语句C
}else{
上述都不满足 执行语句D
}
代码示例:
package struct;
import java.util.Scanner;
public class ifDemon03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/*
if语句至多有一个else语句,且else语句在所有的else if语句之后
if语句可以有若干个else if语句,它们必须在else语句之前
一旦其中一个else if 检测为true,其他的else if 以及else语句都将跳过执行
*/
System.out.println("输入您的成绩:");
int score = scanner.nextInt();
if (score==100){
System.out.println("恭喜满分");
}else if(score<100&&score>=90){
System.out.println("A");
}else if(score<90&&score>=80){
System.out.println("B");
}else if(score<80&&score>=70){
System.out.println("C");
}else if(score<70&&score>=60){
System.out.println("D");
}else{
System.out.println("不合格");
}
scanner.close();
}
}
??? 3.4 嵌套的if结构
语法:
if(布尔表达式1){
if(布尔表达式2){
}
}
代码示例:寻找一个数,在1-100之间
???? 3.5 switch多选择结构
语法:
switch(expression){
case value1:
执行语句A
break; //可选
case value2:
执行语句B
break;
.....
default: //可选 意思是可有可无
执行语句
}
注意点:不写break,会出现case穿透
代码示例:?????
package struct;
public class switchDemon01 {
public static void main(String[] args) {
char rank = 'A';
/*
不加break 会出现case穿透
优秀
良好
一般
就那样
呵呵
*/
switch (rank){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("一般");
break;
case 'D':
System.out.println("就那样");
break;
case 'E':
System.out.println("呵呵");
break;
}
}
}
switch总结
- switch语句中的变量类型可以是,byte,short,int或者char
- 从JAVASE 7开始,switch支持字符串String类型。
-
package struct;
public class switchDemon02 {
public static void main(String[] args) {
String name = "EZ";
//JDK7新特性,表达式的结果可以是字符串
//反编译 java---->class(字节码文件)---------->反编译
switch (name){
case "EZ":
System.out.println("adc");
break;
case "德玛":
System.out.println("上单");
break;
}
}
} 查看上面代码反编译后的结果 -
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package struct;
public class switchDemon02 {
public switchDemon02() {
}
public static void main(String[] var0) {
String var1 = "EZ";
byte var3 = -1;
switch(var1.hashCode()) {
case 2229:
if (var1.equals("EZ")) {
var3 = 0;
}
break;
case 23854855:
if (var1.equals("寰风帥")) {
var3 = 1;
}
}
switch(var3) {
case 0:
System.out.println("adc");
break;
case 1:
System.out.println("涓婂崟");
}
}
}
4. 循环结构
??????? 4.1 while循环
package struct;
public class WhileDemon01 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
while (i<=100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
??????? 4.2 do-while循环
??????????????? 对于while而言,如果不满足条件,则无法进入循环,但是有时候我们需要即使不满足条件,也至少执行一次。
??????? while vs do-while
???????? (1) while先判断后执行,do-while先执行后判断
??????? (2)由(1)可知,do-while至少会执行一次。
语法结构:
do{
执行语句
}while(布尔表达式);
????
package struct;
public class WhileDemon01 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
do {
sum = sum + i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
public class WhileDemon01 {
public static void main(String[] args) {
int a = 0;
while (a<0){
System.out.println(a);
a++;
}
System.out.println("==============");
do {
System.out.println(a); // 0
a++;
}while (a>10);
}
}
4.3 for循环
语法:??????
for(初始化;布尔表达式;更新){
//代码语句
}
关于for循环的几点说明:
??????? 最先执行初始化步骤,可以声明一种类型,但可以初始化一个或者多个循环控制变量,也可以是空语句。
??????? 检测布尔表达式的值,如果结果为true,循环体被执行,否则被终止
??????? 执行一次循环后,更新循环控制变量
for(;;i++){
}
///死循环
for(;;;){
}
fori tab快捷
示例1:计算0-100之间的奇数和偶数的和
public class WhileDemon01 {
public static void main(String[] args) {
//计算0-100之间的奇数和偶数的和
int NumJs = 0;
int NumOs = 0;
for(int i=0;i<=100;i++){
if (i%2==0){
NumOs += i; //偶数累加
}else {
NumJs += i; //奇数累加
}
}
System.out.println("奇数和偶数的和"+NumOs+NumJs);
}
}
实例2:循环输出1-1000之间能被5整除的数,并且每行输出3个
public class WhileDemon02 {
public static void main(String[] args) {
//循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i < 1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.println("\n");
}
}
}
}
/*
注意:
println:输出一个语句结束会自动换行输出,
print在输出完一个语句时并不会自动换行。
*/
示例3:?? 实现99乘法表
public class WhileDemon03 {
public static void main(String[] args){
/*
行变量走外循环;列变量走内循环
*/
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}}
}
4.4 增强型for循环(java5中引入一种主要用于数组的增强型for循环)
??????? 语法格式
for(声明语句:表达式){
//执行语句
}
??????? 声明语句
??????????????? 声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
????????表达式
??????????????? 要访问的数组名或者是返回值为数组的方法。
public class ForDemon01 {
public static void main(String[] args) {
int [] number = {10,20,30,40};
//增强型for循环
for(int x:number){
System.out.println(x);
}
}
}
================================================
public class ForDemon01 {
public static void main(String[] args) {
int [] number = {10,20,30,40};
//普通for循环
for(int i=0;i<5;i++){
System.out.println(number[i];
}
}
}
5. break & continue
??????? break:用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)
??????? continue:用于终止某次循环过程。
??????? goto:尽管goto是java的一个保留字,但未在语言中正式使用,也就是java中没有goto
带有标签的break和continue
代码示例:??
public class BreakDemon01 {
public static void main(String[] args) {
int i = 0;
while(i<10){
i++;
if(i==8){
// break;//输出8以后就跳出循环了 不执行了
continue;//就跳出本次循环了 也就是输出8之前跳出去
} System.out.println(i);
}
}
}
6.代码实践练习
打印 三角形
public class PracticeDemon01 {
public static void main(String[] args) {
//打印三角形
for (int i = 1; i <=5 ; i++) {
for (int j = 5; j >=i; j--) {
System.out.print(" ");
}
for (int j = 1; j <=i ; j++) {
System.out.print("*");
}
for (int j = 1; j <i ; j++) {
System.out.print("*");
}
System.out.println();
/*
*
***
*****
*******
*********
*/
}
}
|