Java流程控制
1.用户交互Scanner
Scanner对象
基本语法:
Scanner s=new Scanner(System.in);
通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前我们一般使用hasNext()与hasNextLine判断是否还有输入数据。
-
next()
-
一定要读取到有效字符才可以结束输入
-
对输入有效字符之前遇到的空白,next()方法会自动将其去掉
-
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符
package com.study.Scanner; import java.util.Scanner; public class Demo01 { 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(); } }
-
-
nextLine()
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
-
可以获得空白
package com.study.Scanner; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { //从键盘接收数据 Scanner scanner=new Scanner(System.in); System.out.println("使用next方式接收: "); //判断是否还有输入 if (scanner.hasNextLine()){ String str = scanner.nextLine(); System.out.println("输出的内容为: "+str); } scanner.close(); } }
-
package com.study.Scanner;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//从键盘接收数据
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数据: ");
String str = scanner.nextLine();
System.out.println("输出的内容为: "+str);
scanner.close();
}
}
package com.study.Scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//从键盘接收数据
int i=0;
float f=0.0f;
System.out.println("请输入整数: ");
if(scanner.hasNextInt()){
i=scanner.nextInt();
System.out.println("整数数据: "+i);
}else{
System.out.println("输入的输不是整数!");
}
System.out.println("请输入小数:");
if(scanner.hasNextFloat()){
f=scanner.nextFloat();
System.out.println("小数数据: "+f);
}else{
System.out.println("输入的输不是小数!");
}
scanner.close();
}
}
package com.study.Scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner=new Scanner(System.in);
//和
double sum=0;
int m=0;
//通过循环判断是否还有输入,不再里面对每个数进行求和统计
while(scanner.hasNextDouble())
{
double x= scanner.nextDouble();
m++;
sum =sum+x;
System.out.println(m+"你输入了第"+m+"个数据,当前sum="+sum);
}
System.out.println(m+"个数的和为 "+sum);
System.out.println(m+"个数的平均值是"+sum/m);
scanner.close();
}
}
2.顺序结构
package com.study.struct;
public class ShunXuDemo {
public static void main(String[] args) {
System.out.println("hello1");
System.out.println("hello2");
System.out.println("hello3");
System.out.println("hello4");
System.out.println("hello5");
}
}
3.选择结构
- if单选择结构
package com.study.struct;
import java.util.Scanner;
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请您输入一个内容");
String s = scanner.nextLine();
//equals:判断字符串是否相等 判断s是否和Hello相等
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("AND");
scanner.close();
}
}
- if双选择结构
package com.study.struct;
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
//考试分数大于60分及格,小于不及格
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();
}
}
- if双选择结构
package com.study.struct;
import java.util.Scanner;
public class IfDemo03 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int score = scanner.nextInt();
if(score==100)
{
System.out.println("Good");
}else if(score<=90){
System.out.println("A");
}else if(score<=80){
System.out.println("B");
}else if(score<=70) {
System.out.println("C");
}else if(score<60) {
System.out.println("不及格");
}else{
System.out.println("成绩不合法");
}
scanner.close();
}
}
- 嵌套的if结构
if(){
if(){
}
};
- switch多选择结构
switch 语句中的变量类型:
byte,short,int或者char
switch支持字符串String类型
同时case标签必须为字符串常量或者字面量
switch(expression){
case value://语句
break;
case value://语句
break;
default://语句
}
package com.study.struct;
public class SwitchDemo01 {
public static void main(String[] args) {
char grade='C';
switch (grade){
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;
default:
System.out.println("未知");
}
}
}
package com.study.struct;
public class SwtichDemo02 {
public static void main(String[] args) {
String name="西瓜";
switch (name){
case "xg":
System.out.println("不对");
break;
case "西瓜":
System.out.println("西瓜");
break;
default:
System.out.println("你输错了!!!");
}
}
}
4.循环结构
while循环
package com.study.struct;
public class WhileDemo01 {
public static void main(String[] args) {
//输出1-100
int i = 0;
while (i < 100) {
i++;
System.out.println(i);
}
}
}
/**
*while(true)为死循环
*/
package com.study.struct;
public class WhileDemo02 {
public static void main(String[] args) {
//计算1+2+3……+100
int i=1;
int sum=0;
while(i<=100){
sum=sum+i;
i++;
}
System.out.println(sum);
}
}
do while循环
package com.study.struct;
public class WhileDemo03 {
public static void main(String[] args) {
int i=0;
int sum=0;
do {
sum=sum+i;
i++;
}while(i<100);
System.out.println(i);
}
}
for循环
package com.study.struct;
public class ForDemo01 {
public static void main(String[] args) {
int i=1;
int sum=0;
for(i=1;i<=100;i++)//100.for
{
sum=sum+i;
}
System.out.println(sum);
}
}
输出0-100得奇数和偶数和
package com.study.struct;
public class ForDemo02 {
public static void main(String[] args) {
int i=0;
//sum1 表示奇数和
//sum2 表示偶数和
int sum1=0,sum2=0;
for(i=0;i<=100;i++)
{
if(i%2!=0)
{
sum1=sum1+i;
}else {
sum2=sum2+i;
}
}
System.out.println(sum1);
System.out.println(sum2);
}
}
package com.study.struct;
//用while或者for 循环输出1-1000之间能被5整除的数,并且每行输出三个
public class ForDemo03 {
public static void main(String[] args) {
for (int i = 0; i <= 1000; i++) {
if(i%5==0)
{
System.out.print(i+"\t");
}
if(i%(5*3)==0){//每行
//System.out.println();
System.out.print("\n");
}
//println 输出完全换行
//print 输出完全不换行
}
}
}
package com.study.struct;
public class ForDemo04 {
//打印九九乘法表
public static void main(String[] args) {
//1.我们先打印第一列,
//2.我们把固定的1再用一个循环包起来
//3.去掉重复项
//4.调整样式
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
package com.study.struct;
public class ForDemo05 {
public static void main(String[] args) {
int[] numbers={10,20,30,40,50}; //定义一个数组
for (int i=0;i<5;i++)
{
System.out.println(numbers[i]);
}
System.out.println("===========");
//遍历数组的元素
for(int x:numbers){
System.out.println(x);
}
}
}
5.break&continue
package com.study.struct;
public class ContinueDemo01 {
public static void main(String[] args) {
int i=0;
while(i<100){
i++;
if(i%10==0)
{
System.out.println();
continue;
}
System.out.print(i);
}
}
}
package com.study.struct;
public class LabeDemo {
public static void main(String[] args) {
//求质数101-150
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;
}
}
System.out.println(i+"");
}
}
}
6.练习
package com.study.struct;
public class TextDemo {
public static void main(String[] args) {
//打印三角形
for (int i = 0; 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();
}
}
}