用户交互Scanner
- java.util.Scanner:Java通过Scanner类来获取用户输入
- next():
- 一定要读取到有效字符才可以结束
- 遇到有效字符之前的空白,会自动去掉
- 不能接收带有空格的字符串
- 以空格作为结束符
//next方法接收
public static void main(String[] args) {
//打开一个键盘接口取名为scanner
Scanner scanner= new Scanner(System.in);
System.out.println("使用next方式接收");
//判断用户有没有输入字符串
if (scanner.hasNext()){
String str=scanner.next();
System.out.println("输入的内容为"+str);
}
//io流的类用完要关掉
scanner.close();
}
//输入 ‘hello world’
//输出‘hello’
- nextline():
- 以Enter作为结束符
- 可以接受空格
//nextline方式接收
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("输入的内容为"+str);
}
//io流的类用完要关掉
scanner.close();
}
//输入 ‘hello world’
//输出‘hello world’
- scanner 其他用法
//scanner.nextInt();
//scanner.nextFloat();
Scanner scanner = new Scanner(System.in);
System.out.println("input int:");
if(scanner.hasNextInt()){
int i =scanner.nextInt();
System.out.println("int :"+i);
}else {
System.out.println("the wrong type input");
}
if(scanner.hasNextFloat()){
float f=scanner.nextFloat();
System.out.println("Float:"+f);
}
//io流的类用完要关掉
scanner.close();
//输入 30 31.2-》int :30
//Float:31.2
//30 31-》int :30
//Float:31.0
//31.3 30.1-》the wrong type input
//Float:31.3
//31.2 30-》the wrong type input
//Float:31.2
// 说明只有当例子中的i =scanner.nextInt():用i接收了scanner的io流中的Int型字段后,io才能流向下一个字段
// 证明了scanner是io流的类
- 小活动
//输入多个数字,求总和以及平均数,每输入一个数字用回车确认,输入非数字结束输入并输出结果
float sum_input=0;
float mean_input=0;
int temp=0;
Scanner scanner= new Scanner(System.in);
while (true){
if(scanner.hasNextFloat()){
temp+=1;
sum_input+=scanner.nextFloat();
}
else {
System.out.println("sum="+sum_input);
mean_input=sum_input/temp;
System.out.println("mean="+mean_input);
break;
}
}
scanner.close();
//另一种编程方式
float sum_input=0;
float mean_input=0;
int temp=0;
Scanner scanner= new Scanner(System.in);
while (scanner.hasNextFloat()){
temp+=1;
sum_input+=scanner.nextFloat();
}
System.out.println("sum="+sum_input);
mean_input=sum_input/temp;
System.out.println("mean="+mean_input);
}
scanner.close();
流程结构
顺序结构
任何算法都离不开的结构
基础结构
System.out.println("h1");
System.out.println("h2");
System.out.println("h3");
System.out.println("h4");
选择结构
- if
if (布尔表达式){
//如果满足则执行这段代码
}
- if - else
if (布尔表达式){
//如果满足则执行这段代码
}else{
//不满足执行这段
}
- if- else if-else
Scanner scanner = new Scanner(System.in);
System.out.println("input:");
String s=scanner.nextLine();
if(s.endsWith("hello")){
System.out.println(s);
}else if(s.equals("rwl")) {
System.out.println("niubi");
}else{
System.out.println("nothing valid");
}
scanner.close();
}
switch多选择结构
-
判断Expression是否为value,执行相应的语句
-
switch语句中的变量类型可以是:
- byte、short、int、char、string
-
case标签必须为字符串常量或字面量
switch (Expression){
case value:
//语句
//break;
case value:
//语句
//break;
default://可选
//语句
}
String grade ;
Scanner scanner = new Scanner(System.in);
grade=scanner.nextLine();
switch (grade){
case "A":
System.out.println("GOOD");
break;
case "B":
System.out.println("Middle");
break;
case "C":
System.out.println("Bad Boy");
break;
default:
System.out.println("keep studying!");
}
循环结构
- 知道布尔表达式为true,循环就会一直执行下去
- 大多情况是循环达到某种目的后用break让循环结束
- 少部分情况需要循环一直执行,如服务器监听
while(布尔表达式){
//循环内容
}
int i=0;
while (i<100){
i++;
System.out.println(i);
}
int i=0;
do{
i++;
System.out.println(i);
}while (i<100);
- 最先执行初始化步骤
- 检测布尔表达式的值(true->执行;false->跳出循环)
- 执行循环内容
- 更新值
- 再次监测布尔表达式的值
- …
for(初始化;布尔表达式;更新值){
//循环内容
}
int a;
for(a=1;a<101;a++){
System.out.println(a);
}
//快捷键100.for->
for (int i = 0; i < 100; i++) {
}
//死循环
for(;;){
//循环内容
}
- 小练习
//0-100的奇数和与偶数和
int sum_e;
int sum_o;
int i;
for (i = 0,sum_o=0,sum_e=0; i <= 100; i++) {
if(i%2==1){
sum_o=sum_o+i;
}else {
sum_e += i;
}
}
System.out.println("sum_o="+sum_o);
System.out.println("sum_e="+sum_e);
//输出0-1000内可以被5整除的数,并每行输出三个
int i;
int temp;
for ( i = 0,temp=0; i < 1001; i++) {
if (i%5==0){
System.out.print(i+"\t");
temp++;
if(temp==3){
System.out.println("");
temp=0;
}
}
}
//九九乘法表
int i;
for(i=0;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
- 增强for循环
int[] n={10,20,30,40};
for (int x:n){
System.out.print(x+"\t");
}
(每种语言break和continue都一样)
goto被java放弃了,我也从来都没用过
break:跳出这一层循环
continue:跳出这一次循环-》跳过这次(最深的一个循环)循环接下来的代码
- 如果之前没学过其他语言,建议去C语言深入了解一下这个的用法