java.util.Scanner是java5的新特征,我们可以通过scanner类获取用户的输入。
Scanner scanner = new Scanner(System.in);//输入new Scanner(System.in)+Alt+回车输入
new代表创建一个新对象
System.in代表用户输入
通过Scanner类的next()与nextline()方法获取输入的字符串,在读取数据前,需要使用hasNext与hasNextLine判断是否还有输入的数据。
用代码的方式输入字符串
Scanner scanner = new Scanner(System.in);
String str=scanner.next();//创建一个字符串类型的变量,名字为str,用next的方法从键盘接收
System.out.println("输入的内容为:"+str);
这样我们输入一个字符串,屏幕上就会打印对应的字符串
但是当我们输入的字符串后面有空格时,屏幕上只会打印空格前的内容
当我们想将空格前后的内容全部打印出来时可以用nextline()方法获取输入的字符串
代码如下:
Scanner scanner = new Scanner(System.in);
String str=scanner.nextLine();
System.out.println("输入的内容为:"+str);
在调用Scanner类是,最好在结束加上scanner.close();,这样可以减少不必要浪费的资源
1.一定要到有效字符后才可以结束输入
2.对输入有效字符前遇到的空白,next()方法会将其过滤掉
3.只有输入有效字符才将其后面输入的空白作为分隔符或者结束符
4.next()方法不能得到带有空格的字符
1.以Enter为结束符,也就是nextLine()方法返回的是输入回车前的字符
2.可以获得空白
使用scanner接收整数数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字:");
int i = 0;
float f = 0.0f;
if (scanner.hasNextInt())//判断输入的数字是不是整数,如果是整数就输出这个数
{
i=scanner.nextInt();
System.out.println("您输入的是整数,这个整数为:"+i);
}
else {
System.out.println("您输入的不是整数");
}
使用scanner接收小数数据
float f = 0.0f;
if (scanner.hasNextFloat())//判断输入的数字是不是小数,如果是小数就输出这个数
{
f=scanner.nextFloat();
System.out.println("您输入的是小数,这个小数为"+f);
}
else {
System.out.println("您输入的不是小数");
}
scanner.close();
练习:输入多个数字计算这几个数字的和,平均值
Scanner scanner = new Scanner(System.in);
int i = 0;//计算输入了几个数字
double d = 0.0;//将输入的和的值记录到d中
while (scanner.hasNextDouble())//判断输入的数是不是数字
{
double x=scanner.nextDouble();
i+=1;//如果输入的是数字就自增1
d+=x;//将输入的值记录到d中,并且进行求和
}
System.out.println("和为:"+d);
System.out.println("平均值为"+(d/i));
scanner.close();
顺序结构就是语句和语句之间,自上而下执行
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
由此可见,程序就是从上而下依次打印的
语法
if(布尔表达式)
{
如果布尔表达式是ture就执行的语句,里面是一个语句块
}
例句:
int i = 10;
int j = 20;
if (i<j)//当i
{
System.out.println(j);//当条件为真时打印j的值
}
语法
if(布尔表达式)
{
如果布尔表达式是ture就执行的语句
}
else
{
如果布尔表达式是flase就执行的语句
}
例句
int i = 10;
int j = 20;
if (i<j)//当i
{
System.out.println(j);//当条件为真时打印j的值
}
else//当if的条件为假
{
System.out.println(i);//当条件为假时打印i
}
if(布尔表达式1)
{
布尔表达式1为真时,执行的语句
}
else if(布尔表达式2)
{
布尔表达式2为真时,执行的语句
}
else if(布尔表达式)
{
布尔表达式3为真时,执行的语句
}
else
{
当上面的表达式为假时,执行的语句
}
练习:当一个学生的成绩在90100分时,输出A,当一个学生的成绩在8090分时,输出B,当一个学生的成绩在7080分时,输出C,当一个学生的成绩在6070分时,输出D,当一个学生的成绩在以下60分时,输出E,否则提醒输入的值不正确
int i = 0;
Scanner scanner = new Scanner(System.in);
i=scanner.nextInt();
if(i>90&&i<=100)
{
System.out.println("A");
} else if (i>80&&i<=90) {
System.out.println("B");
} else if (i>70&&i<=80) {
System.out.println("C");
} else if (i>60&&i<=70) {
System.out.println("D");
} else if (i < 60) {
System.out.println("E");
}
else {
System.out.println("请输入有效成绩");
}
scanner.close();
语法:
if(布尔表达式1)
{
//布尔表达式1为真执行代码
if(布尔表达式2)
{
//布尔表达式2为真执行代码
}
}
练习:输入一个数,判断是否是闰年
判断闰年的条件:1.能被4整除,并且不能被400整除
2.能被400整除
int i = 0;
Scanner scanner = new Scanner(System.in);
i=scanner.nextInt();
if(i%4==0)//当能被4整除时执行代码块
{
if(i%400!=0)//当不能被400整除时执行代码块
{
System.out.println(i+"是闰年");
}
} else if (i % 400 == 0)//当能被400整除时执行代码块
{
System.out.println(i+"是闰年");
}
else //当以上条件都不能成立时执行的代码块
{
System.out.println("不是闰年");
}
scanner.close();
switch一般与case,break绑定,作用是判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
byte,int,short,char,String
case标签必须为字符串常量或字面量
语法:
switch(表达式)
{
case value:
//语句
break;//看情况选择加不加
case value:
//语句
break;//看情况选择加不加
default://看情况选择加不加
//语句
}
练习:输入一个数字输出与数字对应的星期数,输入1打印星期一
int i = 0;
Scanner scanner = new Scanner(System.in);
i=scanner.nextInt();
switch (i)
{
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;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入有效日期");
}
scanner.close();
break在switch中的作用是:当你输入的数与case匹配成功时,就只执行这个语句。如果没有break,会一直向下执行
int i = 0;
Scanner scanner = new Scanner(System.in);
i=scanner.nextInt();
switch (i)
{
case 1:
System.out.println("星期一");
case 2:
System.out.println("星期二");
case 3:
System.out.println("星期三");
case 4:
System.out.println("星期四");
case 5:
System.out.println("星期五");
case 6:
System.out.println("星期六");
case 7:
System.out.println("星期日");
default:
System.out.println("输入有效日期");
}
scanner.close();
比如输入4时
while (布尔表达式)
{
//循环体
}
只要布尔表达式为真,循环就一直进行
一般情况下,循环是要停止的,所以要让布尔表达式失效的方式来结束循环
如果布尔表达式一直为真,程序一直循环,会造成死循环
练习:输出1~100
int a = 1;//因为是1~100所以初始化为1
while (a<=100)//当a大于100是就不循环了
{
System.out.print(a+" ");//每循环一次就打印一个数
a++;//打印完后自增1
}
练习:计算1~100的和
int i = 0;
int sum = 0;
while (i<=100)
{
sum+=i;//将i每次得到的值累加到sum
i++;
}
System.out.println(sum);
对于while如果一上来条件就不成立那么就一次都不循环,但是,do…while循环计算条件一次不成立它最起码会执行一次循环
while和do…while的区别
while先判断后执行,do…while先执行后判断
do…while语句的语法
do {
//代码语句
}while(布尔表达式);
int i = 0;
while (i<0)
{
System.out.println(i);
i++;
}
System.out.println("==============");
do {
System.out.println(i);
i++;
}while (i<0);
上面的while循环,因为i不符合i<0的条件,所以不会执行循环语句,do…while语句因为是先打印再判断的所以会输出一个0
for循环语句是支持迭代的一种通用结构,是最有效·最灵活的循环结构
for循环的语法格式
for(初始化;判断部分;调整部分)
{
//代码语句
}
for语句执行顺序是:先初始化,然后进行判断部分,如果判断部分为真,就进入调整部分,然后再进入判断部分,如果为假结束循环。
用for语句打印0~100的偶数的和,和奇数的和
int sum=0;//存放偶数的和
int num=0;//存放奇数的和
for (int i = 0; i <= 100; i++) {
if(i%2==0)
{
sum+=i;
}
if (i%2!=0)
{
num+=i;
}
}
System.out.println(sum);
System.out.println(num);
判断一个数是不是素数
素数的条件:只能被2和它本身整除
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int flag=1;
for (int i=2;i<=n;i++)//打印二到它本身的数
{
if (n%i==0)//用n/i如果能被整除就不是素数,否则就是素数
{
flag=0;
System.out.println("你输入的数"+n+"不是素数");
break;
}
if(flag==1)
{
System.out.println("你输入的数"+n+"是素数");
}
}
{
num+=i;
}
}
System.out.println(sum);
System.out.println(num);
判断一个数是不是素数
素数的条件:只能被2和它本身整除
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int flag=1;
for (int i=2;i<=n;i++)//打印二到它本身的数
{
if (n%i==0)//用n/i如果能被整除就不是素数,否则就是素数
{
flag=0;
System.out.println("你输入的数"+n+"不是素数");
break;
}
if(flag==1)
{
System.out.println("你输入的数"+n+"是素数");
}
}