Java学习笔记03: Java基本语法流程控制
- 用户交互
- 顺序结构
- 选择结构
- 循环结构
- break&& continue
- Excrise
用户交互Scanner
我们可以通过Scanner类来获取用户的输入
import java.util.Scanner;
基本语法: Scanner sc = new Scanner(System.in)
通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据,但是两者又有所区别:
1. 使用hasNext()方式判断用户是否输入,使用next()来接受用户输入的内容
Scanner sc = new Scanner (System.in);
if(sc.hasNext()){
String str = new String(sc.next());
System.out.println("str"+str);
}
sc.close();
/* input: Hello World
* out: Hello
*/
2. 使用hasNextLine()方式判断用户是否输入,使用nextLine()来接受用户输入的内容
Scanner sc = new Scanner (System.in);
if(sc.hasNextLine()){
String str = new String(sc.nextLine());
System.out.println("str"+str);
}
sc.close();
/* input: Hello World
* out: Hello World
*/
结论:
next():
- 一定要读取到有效数字以后才开始结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉.
- 对只有输入有效字符后才浆其后面的输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
nextLine(): - 以Enter作为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 也可以获得空白
使用scanner进行的一些计算:
package com.Scanner;
import java.util.Scanner;
public class demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum=0;
int count=0;
System.out.println("请输入你要计算的数据,可以计算出数字的个数,平均数,总和;\n以非数字为终止;");
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
sum=sum+x;
count=count+1;
System.out.println("你输入的是第"+count+"个数字, 总和为: "+sum);
}
System.out.println("你共计输入了:"+count+"个数字;数字的总和是: "+sum+
";平均数字为:"+sum/count);
scanner.close();
}
}
选择结构
if...else结构是用来判断执行顺序的
public class demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("开始输入: ");
String str = scanner.nextLine();
if(str.equals("hello")){
System.out.println("你输入的是hello");
}else {
System.out.println("你输入的不是Hello");
}
scanner.close();
}
}
如果用户输入的是hello,在执行true后面的语句,如果为false的话久执行false后面的语句;
循环结构
- while
- do...while
- for
while语法:
while( true ){ //语句 }
do...while语法:
do{ //循环体语句}while( true )
for循环语句:
for(初始化;条件判断;更新){
//循环语句
}
无论是上述哪种循环一定要找到循环终止的条件否则的话就会进入死循环
相对于while与do...while来说,while会先根据满足条件才会执行,而do...while就不同了,do会至少先执行循环体一次,然后才会做判断。
for来说,循环条件就更加简单,更加清晰明了
题目1.计算从1+2+3...+100之间所有的奇数和偶数的和
double oddNumberSum = 0;
double evebNumberSum = 0;
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
evebNumberSum = evebNumberSum + i;
} else {
oddNumberSum = oddNumberSum + i;
}
}
System.out.println("0-100之间所有的偶数之和为: " + evebNumberSum+". "
+"所有的偶数之和为: "+ oddNumberSum);
题目2:用for循环出1-1000之间能被5整除的数,并且每行输出三个
for (int i = 1; i < 1000; i++) {
if(i%5==0){
System.out.print(i+" ");
}
if(i%(5*3)==0){
System.out.println();
}
}
题目3.打印九九乘法表
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+(i*j)+" ");
}
System.out.println();
}
增强for循环
int []numbers = {10,20,30,40,50};
for(int item:numbers){
System.out.println(item);
}
/*
10
20
30
40
50
*/
这种增强的for循环方式重点是用来循环数组和对象的。
break continue
- break在任何循环语句的主体部分,均可用break来控制循环的过程。break用于强行退出循环,不执行循环中剩余的语句。
- continue语句在循环体语句中,用于可终止某次循环的过程,既跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
for (int i = 0; i < 100; i++) {
if(i==30){
continue;
}
System.out.println(i);
}
/*
* output: 1...29....100
*/
for (int i = 0; i < 100; i++) {
System.out.println(i);
if(i==30){
break;
}
}
/*
* output: 1...30
*/
打印三角形
/*打印三角形*/
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();
}
浙公网安备 33010602011771号