用户交互scanner&顺序结构&选择结构&循环结构&break&continue
用户交互scanner
使用scanner获取用户的一些输入
基本语法:Scanner s = new Scanner(System.in)
通过Scanner类的next()与nextLine()方法获取输入的字符串,使用hasNext()与hasNextLine()判断是否还有输入的数据
使用next()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才能将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
package com.peng.scanner;
import java.util.Scanner;
public class scanner01 {
public static void main(String[] args) {
// 创建一个扫面器对象,用于接收键盘数据
Scanner s = new Scanner(System.in);
System.out.println("next:"); //hello world
// 判断用户是否接受字符串
if(s.hasNext()) {
// 使用next()方法接受
String str = s.next(); //程序会等待用户输入完毕
System.out.println("content:"+str); //hello
// 凡是IO流的类 用完时候就要关闭
s.close();
}
}
}
使用nextLine()
- 以Enter未结束符,也是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获取空白
package com.peng.scanner;
import java.util.Scanner;
public class scanner02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("please input:");
if(s.hasNext()){
String str = s.nextLine();
System.out.println("content:"+str);
}
}
}
案例1:接受整数型和小数型数据
package com.peng.scanner;
import java.util.Scanner;
public class scanner03 {
public static void main(String[] args) {
int i = 0;
float f = 0.0f;
Scanner s = new Scanner(System.in);
System.out.println("please int:");
if (s.hasNextInt()) {
i = s.nextInt();
System.out.println("int:"+i);
} else {
System.out.println("NO!!");
}
System.out.println("please float:");
if (s.hasNextFloat()) {
f = s.nextFloat();
System.out.println("float:"+f);
} else {
System.out.println("NO!!!");
}
}
}
案例2:数据的求和以及求平均值
package com.peng.scanner;
import java.util.Scanner;
public class scanner04 {
public static void main(String[] args) {
// 输入多个数字,并求其总和与平均数,每输一次数字用回车确定,通过输入非数字来结束输入并输出执行结果
// 和
double d = 0;
// 出入几个数字
int i = 0;
Scanner s = new Scanner(System.in);
// 通过循环判断是否还有输入,并在里面进行求和
while (s.hasNextDouble()) {
// 获取输入的数据
double x = s.nextDouble();
// 输入次数
i++;
// 将被此输入的数据进行叠加
d=d+x;
}
System.out.println(i+"个数的和为"+d);
System.out.println(i+"个数的平均值为"+(d/i));
s.close();
}
}
java顺序结构
Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句的执行。
顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构。
选择结构
if单选结构:if(){}
if双选结构:if(){} else{}
if多选结构:if(){} else if(){} else if(){} else{}
嵌套if结构:if(){if(){}}
switch多选结构:switch case语句(一个变量与一系列中某个值是否相等,每个值称为一个分支)。变量类型:byte short int char。switch支持字符串String类型,同时case标签必须为字符串常量或字面量
switch:
package com.peng.scanner;
import java.util.Scanner;
public class struct {
public static void main(String[] args) {
// case 穿透
// switch 匹配一个具体的值
char grade = 'C';
switch(grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
default:
System.out.println("查询不到");
}
// JDK7新特性 表达式结果可以是字符串
String name="seven";
// 字符的本质还是数字
// 反编译 Java---class(字节码文件)---反编译(IDEA)
switch (name) {
case "seven":
System.out.println("seven");
break;
case "one":
System.out.println("one");
break;
default:
System.out.println("NO");
}
}
}
循环结构
while循环:while(大多数这里的内容为:不成立){}
do...while循环:即使不满足,也要循环一次。
for循环:
-
在执行之前就确定了执行的次数
-
100.for会自动生成1-100的循环框架
-
最先执行的初始化步骤,可以声明一个类型,但可初始化一个或多个循环控制变量,也可以是空语句
-
for(;;;){}死循环
九九乘法表
package com.peng.scanner; public class struct_while_for { public static void main(String[] args) { // 用for循环输出1-1000之间能被5整除的数,并且每行输出3个 for (int j = 1;j<=1000;j++) { if (j%5==0) { System.out.print(j+"\t"); } if(j%(5*3)==0) { System.out.println(); // System.out.print("\n"); } } // System.out.println(); 输出后换行 // System.out.print(); 输出后不换行 System.out.println(); // 控制行 for(int i=1;i<10;i++){ // 控制列 for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+i*j+"\t"); } System.out.print("\n"); } } }
在Java5中引入了一种主要用于数组的增强型for循环
增强for循环
-
它主要是用于数组和集合的增强型for循环
-
for(声明语句:表达式) {}
-
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,作用域限定在循环语句块,其值与此时数组元素的值相等。
-
表达式是要访问的数组名,或者是返回值为数组的方法。
package com.peng.scanner; public class for_strong { public static void main(String[] args) { int [] number = {1,2,3,4,5,6,7}; for (int x :number) { System.out.println(x); } } }
break和continue
break用于强行退出循环,不执行剩下的语句。是退出循环,而不是终止运行。
continue用于终止某次循环过程,跳过循环体中尚未执行的语句,接着执行下一次是否执行循环的判断
练习
打印101-150之间的所有的质数&打印三角形
package com.peng.scanner;
public class for_strong {
public static void main(String[] args) {
// 打印101-150之间的所有的质数
// goto 关键字
int count=0;
outer:for (int i=101;i<=150;i++) {
for (int j=2;j<i/2;j++) {
if (i%j==0) {
continue outer;
}
}
count++;
System.out.println(i);
}
System.out.println(count);
// 打印三角形
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();
}
}
}
因编译器对中文无法编译而出现的乱码现象
打开file-->settings(快捷键ctrl+alt+s),快速搜索encoding