控制台输入
使用标准输入串System.in
使用Scanner取得一个字符串或一组数字
在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以 取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转 换成布尔型。
例:
System.out.print(“输入”);
Scanner scan = new Scanner(System.in);
String read = scan.next ();
System.out.println(“输入数据:”+read);
在使用Scanner对象时,需要在文件头带入 java.util.Scanner;
写法为: import java.util.Scanner;
代码展示
public static void main(String[] args) {
System.out.println("请输入一个数:");
Scanner s = new Scanner(System.in);
int x = s.nextInt();
System.out.println("输入数据为:"+x);
}
运行结果
请输入一个数:
9
输入数据为:9
控制语句
•条件语句 - 根据不同条件,执行不同语句。
–if
–if … else
–if … else if
–if … else if … else if … else
–switch
•循环语句 – 重复执行某些动作
–for
–while
–do … while;
if条件结构
if条件结构
根据条件判断之后再做处理
条件表达式必须是一个返回布尔结果的表达式。
语句可以是用{}包含的语句块。
if ( 条件 ) {
//语句
}
代码展示
public static void main(String[] args) {
int i = 1;
int j = 2;
if (i<j){
System.out.println(i+"<"+j);
}
}
运行结果
1<2
if-else条件结构
if ( 条件 ) {
//语句1
}else {
//语句2
}
代码展示
public static void main(String[] args) {
int i = 1;
int j = 2;
if (i>j){
System.out.println(i+">"+j);
}
else {
System.out.println(i+"<"+j);
}
}
运行结果
1<2
分支和循环结构
if-else语句的另一种形式为:
if (条件1){
语句1;
} else if (条件2){
语句2;
}……
}else if (条件N){
语句N;
}
条件运算符与if-else的联系与区别:
① 条件运算符可简化if-else语句
② 条件运算符要求必须返回一个结果。
③ if后的代码块可有多个语句
代码展示
public static void main(String[] args) {
boolean b = true;
if(b==false)
System.out.print("a");
else if(b)
System.out.print("b");
else if(!b)
System.out.print("c");
else
System.out.print("d");
}
运行结果
b
switch语句
switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个
switch (表达式){
case value1: 语句序列1;
[break];
…………
case valueN: 语句序列N;
[break];
[default : 缺省语句;]
}
- 表达式可以是byte、short、int、char、枚举类型。JDK 7以后,可以使用String类型
- case语句后面只能使用常量表达式
- case语句后面只能使用常量表达式
- 某个case分支如果没有提供break语句,则继续执行下一个case后的语句
- 当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句
- 如果没有default子句,则程序直接跳出switch语句
代码展示
public static void main(String[] args) {
String day = "1";
switch (day){
case "0":
System.out.println("星期天");
break;
case "1":
System.out.println("星期1");
break;
case "2":
System.out.println("星期2");
break;
default:
System.out.println("无效日期");
}
}
运行结果
星期1
switch与if语句的对比
如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可 以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
循环语句
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分
① 循环变量的初始化
② 循环条件部分
③ 循环体部分
④ 循环变量的更新
循环语句分类
while 循环
do/while 循环
for 循环
while语句&do while语句
•while 语句为如下形式:
while(逻辑表达式){ 语句; … ;}
•执行过程
先判断逻辑表达式的值。若=true.则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止
•do while 语句为如下形式:
do { 语句; … ;} while(逻辑表达式);
•执行过程
先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环
代码展示
public static void main(String[] args) {
//while先判断 后执行 条件不成立一次都不执行
/* int a=0;
while(a<5){
System.out.println(a);
a++;
}
while(true){
new String("阿");
}*/
//while先执行一次 然后判断 条件不成立至少执行一次
int i=0;
do{
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数");
i= s.nextInt();
}while(i>5);
}
运行结果
请输入一个数
6
请输入一个数
8
请输入一个数
9
请输入一个数
7
请输入一个数
3
for循环语句
- for 语句为如下形式:
for(表达式1; 表达式2; 表达式3){
语句;
… ;
}
- 执行过程
首先计算表达式1,接着执行表达式2,若表达式2的值 =
true,则执行循环语句,
接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.
代码展示
public static void main(String[] args) {
/*
先执行第一部分变量初始化 只执行一次
进入循环的条件 多次
循环语句 多次
变量更新 多次
*/
/* for(int i=0;i<5;i++){
System.out.println(i);
}*/
int i=0;
for(;i<5;){
System.out.println(i);
i++;
}
}
运行结果
0
1
2
3
4
for循环的循环嵌套
代码展示
public static void main(String[] args) {
/*
for语句的循环嵌套 -----> for循环语句的快捷键 fori
输出一个 ***
***
***
*/
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 1; j++) {
System.out.println("***");
}
}
}
运行结果
***
***
***
break & continue
- break 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环
- continue 语句用在循环语句体中,用于终止某次循环过程,跳过循环体中
continue 语句下面未执行的循环,开始下一次循环过程
代码展示
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i==5){
break; //break直接终止循环
}
System.out.println(i);
}
for (int j = 0; j < 10; j++) {
if(j==5){
continue; //continue跳出所在循环,不终止
}
System.out.println("j==="+j);
}
}
运行结果
0
1
2
3
4
j===0
j===1
j===2
j===3
j===4
j===6
j===7
j===8
j===9
循环嵌套
-
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环
-
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环
-
结束外层循环
-
如果需要从多层循环跳出,则需要使用标签,定义一个标签,如label,然后在需要跳出的地方,用break label就行了
以下就以for循环来演示一下循环的嵌套和用标签结束外层循环:
代码展示
public static void main(String[] args) {
out:for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if(j==5){
break out;//结束指定标记名称的循环
}
System.out.print("j==="+j);
}
System.out.println("i=="+i);
}
}
运行结果
j===0j===1j===2j===3j===4
Java中的方法
• Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,方法包含于类或对象中.
• 方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名 (形式参数类型 参数名) {
Java语句;… … …
[return 返回值;]
}
• **修饰符:**这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
• 形式参数: 在方法被调用时用于接收外界输入的数据。
• **实参:**调用方法时实际传给方法的数据。
• **返回值:**方法在执行完毕后返还给调用它的环境的数据。
• **返回值类型:**事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
代码展示
public static void main(String[] args) {
MethodDemo1 m=new MethodDemo1();
//调用open方法
m.open();
//调用getMax方法
int p=m.getMax(10,6);
System.out.println(p);
//调用test方法
int q=m.test();
System.out.println(q);
}
//开门方法
public void open(){
System.out.println("开门");
}
//返回两个值中最大的那个
public int getMax(int a,int b){
return (a>b)?a:b;
}
运行结果
开门
10
• Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
• 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
• return 语句终止方法的运行并指定要返回的数据。
return语句
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
① return 表达式; //将表达式的值返回
② return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,此类return语句有时可省略
return的用法上面有用到可以参考上面的代码了解