1、Scanner的使用
实现用户数据的交互,用户通过终端输入数据
注意:使用Scanner需要导包。即import java.util.Scanner;
如果对类型没有要求,直接用.next();
next();//读取用户输入的字符串数据
nextLine();//读取用户输入的一行数据 以换行符(回车)作为分隔
nextInt();//读取用户输入的int整型数据 ,需要注意输入的数据类型要匹配;
nextDouble();//读取用户输入的double浮点型数据
注意:如果在nextLine();操作前使用了nextInt();nextDouble();等方法,nextLine()方法会读取到上面方法所输入的换行符。
示例:
import java.util.Scanner;
public class Scanner_Date {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩:");//如果对类型没有要求,直接用.next();
//String input = sc.next();//读取字符串数据,会阻塞程序,默认结束为回车
//String input = sc.nextLine();//读取一行,会阻塞程序,默认结束为回车
//int input = sc.nextInt();//读取int类型数据,会阻塞程序,默认结束为回车
//double input = sc.nextDouble();//读取double类型数据,会阻塞程序,默认结束为回车
//System.out.println("input="+input);
//如果在nextLine();操作前使用了nextInt();nextDouble();等方法,
//+nextLine()方法会读取到上面方法所输入的换行符。
//double input = sc.nextDouble();
//int input1 = sc.nextInt();
//String input2 = sc.next();
//String a = "a";
//System.out.println(a.equals(input2));//字符串比较用equals()
//分隔符的修改.useDelimiter()
sc.useDelimiter(";");
String input3 = sc.next();
System.out.println(input3);
}
}
2、if语句的使用
2.1、单分支判断语句
if(条件){执行体}
//单分支语句
int score = 80;
if(score>60){
System.out.println("a");
}
2.2、双分支判断语句
if(条件){执行体}
else{执行体}
//双分支
if(score>60){
System.out.println("a");
}else{
System.out.println("c");
}
2.3、多分支判断语句
if(条件){执行体}
else if(条件){执行体}
else if(条件){执行体}
......
else{执行体}
//多分支
if(score>90){
System.out.println("a");
}else if(score>80){
System.out.println("b");
}else if(score>60){
System.out.println("c");
}else{
System.out.println("d");
}
注意事项:
if 和 else if 以及 else 中 如果没有{},则默认他下面的第一行为语句体;
else if以及else必须要和if是成对匹配的;
if判断语句的使用:通过键盘输入一个年份,比如1990,判断是否为闰年
--能够整除400
--能整除4且不能整除100
import java.util.Scanner;
public class Test{
public static void main(String[] args){
//通过键盘输入一个年份,比如1990,判断是否为闰年
//能够整除400 能整除4且不能整除100
//创建Scanner对象
Scanner year = new Scanner(System.in);
//获取年份数据并打印
System.out.print("输入一个年份:");
int y = year.nextInt();
System.out.print(y+"年");
//判断
//通过短路或(判断一个)进行判断if((y%400) || (y%4==0&&y%100!=0))
if(y%4==0&&y%100!=0){
System.out.println("是普通闰年");
}else if(y%400==0){
System.out.println("是世纪闰年");
}else{
System.out.println("不是闰年");
}
}
}
3、switch语句的使用
key类型可以为->1.5版本后支持 byte short int char 1.7版本后增加 String enum
语法:
switch (key) {
case value:
break;
default:
break;
}
说明:
- -case用于匹配数值
- -break用于跳出switch语句
- -default用于设置没有匹配成功的默认操作
示例:
public enum Color{//枚举
RED,YELLOW,BLANK,GREEN
}
public class Switch_Break {
public static void main(String[] args) {
Color item = Color.YELLOW;
switch (item){
case RED:{
System.out.println("RED");
break;
}
case BLANK:{
System.out.println("BLANK");
break;
}
case GREEN:{
System.out.println("GREEN");
break;
}
case YELLOW:{
System.out.println("YELLOW");
break;
}
default:{//不需要break
System.out.println("COLOR NOT IN IT");
}
}
}
4、输出方法的使用
--print 不换行输出
--println换行输出
--printf:格式化输出 中间用(,)分割
格式字符用以指定输出项的数据类型和输出格式。
d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
o格式:以无符号八进制形式输出整数。也可以指定字段宽度用“%mo”格式输出。
s格式:用来输出一个字符串。有几中用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。
f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m个小数 ,其中有n位小数,如数值宽度小于m左端补空格。
x格式:以无符号十六进制形式输出整数。同样也可以指定字段宽度用"%mx"格式输出。
c格式:输出一个字符。
\n 换行
\t制表符
5、循环语句:循环中具备的要素->初始化的变量、条件、循环执行体、迭代
5.1、while: 先判断再执行
int i=1 ;
while(i<=10){
System.out.println(i);
i++;
}
5.2、do while 不管条件是否成立都会执行一次 如果条件成立则继续执行
int i=1 ;
do{//先执行再判断,至少执行一次
System.out.println(i);
i++;
}while(i<=10)
5.3、for
格式:for(初始化;条件;迭代)
int i=1 ;
for(int i = 1;i<=10;i++){//for(;i<=10;i++)
System.out.println(i);
}
//for(;;){
// if(i<=10){
// System.out.println(i);
// }
//break;
//}
5.4、foreach 遍历
格式:for(数据源的类型 临时变量:数据源){执行体}
int [] arr = {1,2,3,4};
for(int item:arr){
System.out.println(item);
}
5.5、循环的控制语句
break语句:结束、退出循环
continue语句:忽略当前循环,继续下一个循环操作
return语句:结束方法,不再执行剩下的所有操作
label标签语句:
label标签是结合控制语句一起使用的
label语法格式: 标签名:
示例:
public class ForControl {
public static void main(String[] args) {
//break
// for (int i = 1; i <=10 ; i++) {
// //break,当i==5时,循环结束
// if (i==5){
// break;
// }
// System.out.println(i);
// }
//continue
// for (int i = 0; i <=10 ; i++) {
// //当i=5时,跳过不输出5
// if (i==5){
// continue;
// }
// System.out.println(i);
// }
//return
// for (int i = 0; i <=10; i++) {
// if (i==5){
// return;//结束方法
// }
// System.out.println(i);
// }
// for (int i = 0; i <=10 ; i++) {
// System.out.println("i="+i);
// for (int j = 0; j <=10 ; j++) {
// if (j==5){
// //break;//结束内循环
// return;//结束内外循环
// }
// System.out.println(j);
// }
// }
//label结束label标签的所有循环
outside://外面,里面都可以
//当k==5时,结束外循环
for (int i = 0; i <=10 ; i++) {
System.out.println("i="+i);
for (int j = 0; j <=10 ; j++) {
if (j==5){
//break outside;//结束外循环
//continue outside;//跳过内循环的5-10
continue ;//只跳过5
}
System.out.println(j);
}
}
}
}