常用的流程控制语句(学员笔记连载第3天)
java提供的类的使用
- 导包,import 包名.类名;
- 创建对象,也是定义变量并赋值
- 数据类型 变量名 = new 数据类型();或者
- 数据类型 变量名;
- 变量名 = new 数据类型();
- 调用方法,变量名.方法名();
double nextDouble() 生成一个随机小数 【0,1)
int nextInt(int max ) 生成一个随机整数 【0,max)
int nextInt (int max ) 1 生成一个随机整数 【1,max)
Random r = new Random();
double d = r.nextDouble(); // 生成【0,1)的随机小数
int i1 = r.nextInt(200); // 生成0——199的随机整数
int i2 = r.nextInt(200) 1; // 生成 1——200 的随机整数
int i3 = r.nextInt(900) 100;// 生成100-999的整数
System.out.println(d);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
结果:
0.4156196015182372
71
134
845
- 导包,位于 java.util 包下 (格式 import 包名.类名)这行语句要写在定义类的语句之上
- 创建一个Scanner的对象【Scanner 变量名 = Scanner(System.in)】
- 使用Scanner对象获取键盘录入的信息
获取int值: 对象名.nextInt();
获取小数值: 对象名.nextDouble();
获取布尔值: 对象名.next.Boolean();
获取字符串: 对象名.next.Line(); next( );
没有nextChar这个方法
4.注意事项
如果程序中除了使用nextLine以外,还使用了其他的nextInt...方法
如果nextLine方法在最后录入,就会导致该字段无法录入进去。
解决方法
① 把nextLine 放到 最上面(nextXXX 方法之上)
② 使用next
/**
阻塞式方法,nextLine的例子
*/
import java.util.Scanner;//导包
public class Demo01_Scanner{
public static void main(String [] args){
Scanner sc = new Scanner (System.in);//定义变量并赋值
System.out.println("请输入您的年龄");
int age = sc.nextInt();
System.out.println("请输入您的身高");
double height = sc.nextDouble ();
System.out.println("请输入您的名字");
String name = sc.next();//原来是String name = sc.nextLine,就会导致名字还没有输入就出了结果
System.out.println("你好," name ",原来你已经" age ",身高" height);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想创建的名称");
String name = sc.next();
System.out.println("请输入您的年龄");
double age = sc.nextDouble(); // 这里可以输入整数,会自动类型提升
System.out.println("请输入您的账号");
int i = sc.nextInt();
System.out.println("恭喜" name "您的账号已创建成功," "年龄是" age "身高" i "," "欢迎来到这个世界莉莉");
}
结果:
请输入您想创建的名称
莉莉
请输入您的年龄
18
请输入您的账号
123
恭喜莉莉您的账号已创建成功,年龄是18.0身高123,欢迎来到这个世界
java只识别语法格式是否错误,不识别变量的值
// java识别常量的true
int a;
if(true){
a = 10;
}
System.out.println(a); // a=10,true是常量
// java 识别不了变量的值
int a;
boolean b = true;
if(b){
a = 10;
}
System.out.println(a); // 会报错,可能尚未初始化a;
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
顺序结构
public static void main(String[] args){
//顺序执行,根据编写的顺序,从上到下运行
System.out.println(1);
System.out.println(2);
System.out.println(3);
}
概述:if的条件是一个范围或者具体的,条件输出的结果之鞥你是布尔的结果 | |||
类型 |
格式 |
含义 |
注意事项 |
单条件判断 |
if (条件){语句} |
如果满足条件则执行语句,如果不满足则不执行 |
1.需要注意变量的作用域范围2.if 语句可以省略大括号 |
互斥条件判断 |
if(关系表达式) { 语句体1;}else { 语句体2;} |
如果满足表达式则执行语句1,否则执行语句2 | |
多条件判断 |
if (判断条件1) { 执行语句1;} else if (判断条件2) { 执行语句2;}...}else if (判断条件n) { 执行语句n;} else { 执行else语句;} |
满足哪个条件就执行对应的语句,如果都不满足就执行else语句(各条件也是互斥的) |
/**
if语句
*/
public class Demo_If {
public static void main (String [] args){
int age = 18;//单条件判断
if (age>=18)
System.out.println("你已经成年了");//执行语句只有一句话时,大括号可以省略
char sex = '人';//互斥条件判断
if (sex == '男')
System.out.println("你是男人");
else
System.out.println("不确定");
double score = 98.9;//多条件判断
if (score >= 90 && score <= 100)
System.out.println("成绩优秀");
else if (score >=70 && score <90)
System.out.println("成绩良好");
else if (score >= 60 && score < 70)
System.out.println("成绩及格");
else
System.out.println("不及格");
}
}
Switch 选择结构,主要运用于几个值中选择一个
Switch 格式 Switch (变量){
case 值1;//有可能的情况是
语句1;
break;//中断的意思
case 值1;
语句1;
break;
。。。。。
default;//默认值的意思
默认语句;
break;
}
import java.util.Scanner;
public class test_switch_01 {
public static void main (String [] args)
{
Scanner sc = new Scanner (System.in);
System.out.println("请输入数字(1 7):");
int num = sc.nextInt();
switch (num)
{
case 1 ;
System.out.println("星期一");
break;
case 2 ;
System.out.println("星期二");
break;
case 3 ;
System.out.println("星期三");
break;
case 4 ;
System.out.println("星期四");
break;
case 5 ;
System.out.println("星期五");
break;
case 6 ;
System.out.println("星期六");
break;2
case 7 ;
System.out.println("星期七");
break;
default:
System.out.println("输入错误");
break;
}
}
}
注意事项:
- switch 小括号中的数据 的数据类型,只能是byte short int char JDK1.5之后可以使用枚举,JDK1.7之后可以使用String
- case 只在第一次判断时生效,之后就相当于没有case了,如果不写break ,代码会自动向下执行,不再判断case,直到运行遇到break 或者大括号结束,这种情况称之为case穿透
循环语句For 循环
- 循环:就是一段代码反复执行
- 循环的四个要素
- 初始化表达式:定义一个变量 用来记录初始的次数
- 布尔表达式:循环的出口 循环的判断条件
- 步进表达式:循环的变量 每次都与偶啊进行变化
- 循环体:在循环中要执行的内容
- for循环格式
for (初始化表达式1;布尔表达式2;步进表达式3){循环体4}
就是以124 324 324........一直到2不满足条件才结束循环
public class Demo_For{
public static void main (String [] args)
{
for (int = 1;i <= 10;i = 1){
System.out.println("hello world" i);
}
}
}
- for循环注意事项,1234均可以为空
- 当1为空时,并不是真的没有初始化表达式,而是初始化表达式可以定义在循环外边,需要注意变量的作用域范围
- 当2为空时,是一个布尔结果相当于true的死循环,会一直循环下去。
- 当3为空时,第一种就是没有步进表达式,且是一个死循环;第二种将步进表达式定义在循环体中
- 当4为空时,循环体为空,没有任何意义
for (int i = 0; i < 5; i ) {
System.out.println("你好 java" i);
}
System.out.println("-------------------");
// 练习1:打印1-100之间的所有偶数,余数为0
for (int i = 1; i <= 100; i ) {
if(i % 2 == 0)
System.out.println(i);
}
System.out.println("-----------------");
// 练习2:求1-100所有数的和
int sum = 0;
for (int i = 0; i <= 100; i ) {
sum =i;
}
System.out.println(sum); // 5050
System.out.println("-----------------------");
// 练习3:求100-999的所有奇数的和
int sum1 = 0;
for (int j = 100; j < 1000; j ) {
if(j % 2 == 1)
sum1 = j;
}
System.out.println(sum1); // 247500
- while循环格式
初始化表达式1;
while (布尔表达式2){
循环体4;
步进表达式3
}
PS:就是以1 243 243 243.。。。。一直到2不满足条件才结束循环
- 不明确循环几次一般使用while循环
public class DemoWhile{
public static void main (String [] args){
//打印100内的整数
int i = 1;
while (i <= 100){
System.out.println(i);
i ;
}
}
}
//随机数,直到50跳出循环
import java.util.Random;
public class DemoWhile{
public static void main (String [] args){
Random r = new Random();
int num = 0;
while ((num = r.nextInt(100)) = 50){
System.out.println (num);
}
}
}
- 注意事项:
注意初始化表达式的作用域范围
布尔表达式为true,就是一个死循环
Do While 循环- 格式
初始化表达式1;
do{
循环体2;
步进表达式3;
}while(布尔表达式4);
1 234 234 234.。。。。。 一直到4不满足为止
do while 循环,无论是否满足条件 都必须先执行一次
//打印10次hello world
public class DemoDowhile{
public static void main(String [] args){
int i = 1;
do {
System.out.println("hello world" i);
i ;
}while (i <=10);
}
}
//一般也不用dowhile 得知道
关键字-break:只能在循环或者是switch 语句中使用,表示的是完全中断不再运行
不能跨级跳出
关键字-continue:只能在循环内部使用,不完全中断,结束当前循环,继续下一次循环
// break 完全中断
for (int i = 0; i < 5; i ) {
if(i==2)
break;
System.out.println(i); // 0,1;到2就跳出循环了
}
// continue 不完全中断
for (int j = 0; j < 5; j ) {
if(j==2)
continue;
System.out.println(j); // 只有2不打印,打印0,1,3,4
}
import java.util.Scanner;
public class test_switch_01 {
public static void main (String [] args)
{
Scanner sc = new Scanner (System.in);
System.out.println("请输入数字(1 7):");
int num = sc.nextInt();
abc://意思就是把switch标记为abc
switch (num)
{
case 1 ;
System.out.println("星期一");
break;
case 2 ;
System.out.println("星期二");
break abc;意思就是从这里跳出去到abc
case 3 ;
System.out.println("星期三");
break;
case 4 ;
System.out.println("星期四");
break;
case 5 ;
System.out.println("星期五");
break;
case 6 ;
System.out.println("星期六");
break;2
case 7 ;
System.out.println("星期七");
break;
default:
System.out.println("输入错误");
break;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入1-7任意一个整数");
int num = sc.nextInt();
if(num == 1)
System.out.println("星期一(");
else if(num == 2)
System.out.println("星期二");
else if(num == 3)
System.out.println("星期三");
else if(num == 4)
System.out.println("星期四");
else if(num == 5)
System.out.println("星期五");
else if(num == 6)
System.out.println("星期六");
else if(num == 7)
System.out.println("星期日");
else
System.out.println("输入的数字不再范围内");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份(1-12)");
int num = sc.nextInt();
switch (num){
case 1:
case 2:
case 12:
System.out.println("是冬季");
break;
case 3:
case 4:
case 5:
System.out.println("是春季");
break;
case 6:
case 7:
case 8:
System.out.println("是夏季");
break;
case 9:
case 10:
case 11:
System.out.println("是秋季");
break;
default:
System.out.println("你输入的数字不在范围内,请重新输入");
break;
}
外循环控制行数,内循环控制列数
// 1.打印一个三行三列的矩形
for (int i = 0; i < 3; i ) {
for (int j = 0; j < 3; j ) {
System.out.print("*"); // 注意这里不能换行
}
System.out.println();
}
System.out.println("-----------------");
// 2.打印一个四行的直角三角形
for (int a = 0; a < 4; a ) {
for (int b = 0; b <= a; b ) {
System.out.print("*");
}
System.out.println();
}
System.out.println("---------");
// 3.打印九九乘法表,打印的时候,先打印内循环的,再外循环的
for (int c = 1; c <= 9; c ) {
for (int d = 1; d <= c; d ) {
System.out.print(d "*" c "=" d*c "\t");
}
System.out.println();
}
练习-综合练习
只有五次猜题的机会
public class Test2 {
public static void main(String[] args) {
Random r = new Random();
int gussNum = r.nextInt(100) 1;
Scanner sc = new Scanner(System.in);
for (int i = 4; i >= 0; i--) {
System.out.println("请输入一个1-100的任意整数,注意您只有5次猜对的机会");
int putNum = sc.nextInt();
if(putNum>gussNum)
System.out.println("sorry,您猜大了");
else if(putNum<gussNum)
System.out.println("sorry,您猜小了");
else
System.out.println("恭喜您,答对了");
System.out.println("请注意您剩余的机会还有:" i "很遗憾");
}
}
}
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com