1.用户交互
Scanner:通过Scanner获取用户的输入
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
public class Demo05 {
public static void main(String[] args) {
//输入多个数字,求其总和与平均数,每输入一个字符回车确认,通过输入非数字来结束输入输出结果
Scanner scanner = new Scanner(System.in);
//求和
double sum = 0;
int count = 0;
//存储输入的数字,并计算个数
//当输入的数字不是double类型的时候退出循环,条件不符合的时候就会跳出循环
while(scanner.hasNextDouble()){
count++;
sum+=scanner.nextDouble();
}
System.out.println("和等于="+sum);
double avg = sum/count;
System.out.println("平均数等于="+avg);
//关闭资源
scanner.close();
}
}
2.顺序结构
3.选择结构
if单选择结构
if(){}
If双选择结构
if(){
}else{
}
If多选择结构
if(){
}if else{
}if else{
}else{
}
满足一个If else其他的If else不执行
使用嵌套的if...else 语句是合法的。也就是说你可以在另一个if或者else if语句中使用if或者else if语句,你可以像if语句一样嵌套else if...else。
//If单选择结构
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
//.equals是针对于字符串的比较
if(s.equals("Hello")){
System.out.println("输入的是:"+s);
}
System.out.println("end");
scanner.close();
}
}
Switch case
public class SwitchDemo01 {
public static void main(String[] args) {
//case穿透 Switch 是匹配一个具体的值 break防止case穿透
//case 支持String,char,short,byte,int
char grade = 'c';
switch(grade){
case 'A':
System.out.println("优秀");
break;//选填 break的作用是跳出switch语句,若不写break将一直执行到底
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("不及格");
break;
default :
System.out.println("成绩输入错误");
}
}
}
4.循环结构
while(){
}
for(){
}
do{
}while()
While和do-While的区别
while先判断后执行,do-while是先执行后判断
Do...while总是保证循环体会被至少执行一次!这是他们的主要差别
For循环:一种支持迭代的通用结构,是最有效,最灵活的循环结构(执行次数在执行前就已确定
for(){
}
public class ForDemo02 {
public static void main(String[] args) {
int count =0;
//使用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
for(int i=1;i<=1000;i++){
//能够被5整除就打印
if(i%5==0){
//每输出三个数换一次行
if(count>=3){
count=0;
System.out.println();
}
System.out.print(i+" ");
count++;
}
}
}
}//print()和println()的区别
public class ForDemo03 {
public static void main(String[] args) {
//打印9*9乘法表
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}
}
for循环的增强:对数组和集合进行遍历
public class ForDemo04 {
public static void main(String[] args) {
//for循环的增强,对数组和集合进行遍历
int[] arr = {10,20,30,40};//创建一个数组
//普通的遍历方法:对数组arr
System.out.println(arr.length);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
System.out.println("--------------------------");
//增强的for循环遍历数组
for(int i:arr){
System.out.println(i);
}
}
}
5.break和continue
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
continue语句在循环语句体中,用于终止某次循环过程,及跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
public static void main(String[] args) {
//break跳出循环语句
int i=0;
while(i<50){
i++;
System.out.println(i);
if(i==30){
break;//i=30的时候执行break跳出while循环
}
}
System.out.println("跳出之后,程序继续执行");
}
public static void main(String[] args) {
//continue跳出当前循环,继续下一次循环(终止某次循环)
for(int i=0;i<100;i++){
System.out.print(i+" ");
if(i%10==0){
System.out.println("---");
continue;
// System.out.println("===");continue之后的语句不会再执行
}
}
}
//label标签方法类似于goto语句
public static void main(String[] args) {
//求100-150之间的质数
out:for(int i=100;i<=150;i++){
for(int j=2;j<i;j++){
if(i%j==0){
continue out;
}
}
System.out.print(i+" ");
}
}
6.练习
public class HomeWork {
public static void main(String[] args) {
//打印三角形 5行
for(int i=0;i<5;i++){
//打印左边的三角
for(int j=4;j>i;j--){
System.out.print(" ");
}
for(int j=0;j<i;j++){
System.out.print("*");
}
//打印右边的三角
for(int z=1;z<i;z++){
System.out.print("*");
}
System.out.println();
}
}