Java学习之路--scanner--键盘录入

发布时间 2023-09-20 14:15:20作者: 寂灭无言
package com.chao.scanner;

import java.util.Scanner;

/*
Scanner的使用
*/
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);

System.out.println("键盘输入数据: ");//使用next方式接收
/*
键盘输入数据:
Hello World!
输出的结果为:
Hello
*/

//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输出的结果为:\n" + str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,养成好习惯,用完就关闭
scanner.close();
}
}

//
//
package com.chao.scanner;

import java.util.Scanner;
/*
Scanner接收方式next()与nextLine()的区别
一般用nextLine()比较多
next():
1.一定要读取到有效字符后才可以结束输入;
2.对输入有效字符前遇到的空白,next()方法会自动将其去掉;
例:String str = scanner.next();
System.out.println("输出的结果为:\n" + str);
键盘输入数据:
Hello World!
输出的结果为:
Hello
3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符;
4.next()方法不能得到带有空格的字符串

nextLine():
1.以按下enter(回车键)为结束符,也就是说,nextLine()方法返回的是输入回车键之前所有的字符;
2.可以获得空白
*/

public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

System.out.println("键盘输入数据: ");//使用nextLine方式接收
/*
键盘输入数据:
Hello World!
输出的内容为:
Hello World!
*/

//判断是否还有输入
if (scanner.hasNext()){
String str = scanner.nextLine();
System.out.println("输出的内容为:\n" + str);
}

scanner.close();
}
}

//
//
package com.chao.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("输出的内容为:\n" + str);

scanner.close();
}
}

//
//
package com.chao.scanner;

import java.util.Scanner;

//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.hasNext()){
i = scanner.nextInt();
System.out.println("整数数据:\n" + i);
}else {
System.out.println("你输入的不是整数数据!");
}

System.out.println("请输入小数: ");
if (scanner.hasNext()){
f = scanner.nextFloat();
System.out.println("小数数据:\n" + f);
}else {
System.out.println("你输入的不是小数数据!");
}
scanner.close();
}
}

//
//
package com.chao.scanner;

import java.util.Scanner;

//Scanner进阶
public class Demo05 {
public static void main(String[] args) {
//输入多个数字,求和,求平均值,求输入了多少个数据
Scanner scanner = new Scanner(System.in);

//和
double sum = 0;//定义一个变量sum表示和
int i = 0;//定义一个变量i用来统计输入的个数

//通过while循环判断是否还有输入,并求和统计输入的个数
System.out.println("请输入数据:");

while(scanner.hasNextDouble()){
double db = scanner.nextDouble();
sum +=db;//sum=sum+db
i +=1;//i++
System.out.println("你输入了第" + i + "个数据" + db + ",现在和sum为" + sum);
}
System.out.println("你一共输入了" + i + "个数");
System.out.println(i + "个数的和为" + sum);
System.out.println(i + "个数的平均值为" + (sum/i));

}
}

//
//
package com.chao.scanner;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
思路分析:
1.定义String类型的变量str用来接收第一个日期
2.定义String类型的变量str1用来接收第二个日期
3.日期格式类型是 SimpleDateFormat,创建对象,日期输入的格式是什么
4.使用if判断第一个日期大还是第二个日期大
5.定义变量x用来接收间隔时间
6.间隔多少天时间除以进制(1000*60*60*24),1000毫秒为1秒,1分钟60秒,1小时60分钟,一天24小时)
7.间隔多少周,得到间隔的天数除以进制(7),一周7天
*/
//键盘输入两个日期,计算这两个日期间隔多少天,间隔多少周,间隔多少年
public class Demo06 {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你出生的日期: ");
String str = scanner.nextLine();
System.out.println("请输入当前日期: ");
String str1 = scanner.nextLine();

SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date d = sd.parse(str);
Date d1 = sd.parse(str1);

long x;
if (d.after(d1)){
x = d.getTime() - d1.getTime();
}else {
x = d1.getTime() - d.getTime();
}
long a = 1000*60*60*24;
long day = x/a;
long years = day/365;
long week = day/7;

System.out.println("你已经出生了" + years + "年");
System.out.println("你已经出生了" + day + "天");
System.out.println("你已经出生了" + week + "周");

}
}

//
//
package com.chao.scanner;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

//以日期格式年-月-日输入一个日期,判断输入这个日期所在年份是闰年还是平年,这个月是几月有几天,今天星期几
public class Demo07 {
public static void main(String[] args) throws Exception{
Scanner input = new Scanner(System.in);
System.out.println("请输入一个日期: ");
String str = input.nextLine();
input.close();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//yyyy-MM-dd(yyyyMMdd,Java中的日期格式标识)
Date date = sdf.parse(str);
Calendar c = Calendar.getInstance();
c.setTime(date);

int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int week = c.get(Calendar.DAY_OF_WEEK)-2;//日期这里有问题,-1或-2得到的星期不是完全正确

GregorianCalendar g = new GregorianCalendar();
if (g.isLeapYear(year)){
System.out.println(year + "是闰年");
}else {
System.out.println(year + "不是闰年");
}

int month_num = c.getActualMaximum(Calendar.DAY_OF_MONTH);

System.out.println(month + "月有" + month_num + "天," + "今天是周" + week);
}
}