第一题
package exercise.day03;
import java.util.Scanner;
public class exercise1 {
public static void main(String[] args) {
//键盘录入引用
Scanner sc = new Scanner(System.in);
//提示用户
System.out.println("请输入一个整数: ");
//接收用户输入的整数
int num = sc.nextInt();
//判断输入数字是奇数还是偶数
if(num % 2 == 0){
System.out.println(num + "是偶数");
}else{
System.out.println(num + "是奇数");
}
}
}
第二题
package exercise.day03;
import java.util.Scanner;
public class exercise2 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//提示用户
System.out.println("请输入一个字符: ");
//用char类型接收用户输入的一个字符
char c = sc.next().charAt(0);
//if语句三种情况
if(c >= '0' && c <= '9'){
System.out.println(c + "是数字.");
}else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'){
System.out.println(c + "是字母.");
}else{
System.out.println("非数字非字母的其他字符.");
}
}
}
[补接收char类型键盘录入字符]
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符");
char c = sc.next().charAt(0);
System.out.println("打印出来为:"+c);
Scanner源码中,我们可知输入String类型实际是调用了next()方法,而输入字符实际上还是输入字符串,然后取字符串的第一个字符. 即str.charAt(0)
第三题
package exercise.day03;
import java.util.Scanner;
public class exercise3 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//提示用户
System.out.println("请输入总价格: ");
//用double类型获取
double totalPrice = sc.nextDouble();
//定义变量折扣discount
double discount = 1;
//判断价格区间
if(totalPrice >= 500){
discount = 0.5;
}else if(totalPrice >= 400 && totalPrice < 500){
discount = 0.6;
}else if(totalPrice >= 300 && totalPrice < 400){
discount = 0.7;
}else if(totalPrice >= 200 && totalPrice < 300){
discount = 0.8;
}else if(totalPrice >= 0 && totalPrice < 200){
discount = 1;
}else if(totalPrice < 0){
System.out.println("输入错误");
}
System.out.println("总价 : " + totalPrice);
System.out.println("折扣 : " + discount);
System.out.println("折扣后总价 : " + totalPrice * discount);
}
}
提示用户语句需要在用变量接收用户输入数据语句之前
第四题
package exercise.day03;
import java.util.Scanner;
public class exercise4 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//提示用户
System.out.println("请输入月份: ");
//用int型接收月份
int month = sc.nextInt();
//提示用户
System.out.println("请输入日期: ");
//用int型接收日期
int day = sc.nextInt();
//判断语句
if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) {
System.out.println("生日" + month + "月" + day + "日是水瓶座");
} else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {
System.out.println("生日" + month + "月" + day + "日是双鱼座");
}else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) {
System.out.println("生日" + month + "月" + day + "日是白羊座");
}else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) {
System.out.println("生日" + month + "月" + day + "日是金牛座");
}else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) {
System.out.println("生日" + month + "月" + day + "日是双子座");
}else if ((month == 6 && day >= 22) || (month == 7 && day <= 22)) {
System.out.println("生日" + month + "月" + day + "日是巨蟹座");
}else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) {
System.out.println("生日" + month + "月" + day + "日是狮子座");
}else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) {
System.out.println("生日" + month + "月" + day + "日是处女座");
}else if ((month == 9 && day >= 23) || (month == 10 && day <= 23)) {
System.out.println("生日" + month + "月" + day + "日是天平座");
}else if ((month == 10 && day >= 24) || (month == 11 && day <= 22)) {
System.out.println("生日" + month + "月" + day + "日是天蝎座");
}else if ((month == 11 && day >= 23) || (month == 12 && day <= 21)) {
System.out.println("生日" + month + "月" + day + "日是射手座");
}else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) {
System.out.println("生日" + month + "月" + day + "日是摩羯座");
}
}
}
但这个代码还有遗漏的地方是没有限制month和day的范围,如果用户输入的数值不在范围内,应该能有报错才好
第五题
package exercise.day03;
import java.util.Scanner;
public class exercise5 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//提示语句
System.out.println("请输入您的出生年份: ");
//int类型接收年份
int year = sc.nextInt();
//判断语句switch
switch(year % 12){
case 9 :
System.out.println("您的生肖是蛇");
break;
case 10 :
System.out.println("您的生肖是马");
break;
case 11 :
System.out.println("您的生肖是羊");
break;
case 0 :
System.out.println("您的生肖是猴");
break;
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;
case 8 :
System.out.println("您的生肖是龙");
break;
}
}
}
[补switch格式]
第六题
package exercise.day03;
import java.util.Scanner;
public class exercise6 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//提示用户输入abc
System.out.println("请输入方程的参数a: ");
double a = sc.nextDouble();
System.out.println("请输入方程的参数b: ");
double b = sc.nextDouble();
System.out.println("请输入方程的参数c: ");
double c = sc.nextDouble();
//if else语句判断条件a != 0;
if(a != 0){
//用tr表示b²-4ac
double tr = b * b - 4 * a * c;
//进行三种情况判断
if(tr > 0){
double x1 = (-b + Math.sqrt(tr)) / (2 * a);
double x2 = (-b - Math.sqrt(tr)) / (2 * a);
System.out.println("方程有两个解: x1 = " + x1 + " , x2 = " + x2);
}else if(tr == 0){
double x3 = -b / (2 * a);
System.out.println("方程只有一个解: x = " + x3);
}else{
System.out.println("方程无解");
}
}else if(a == 0 && b != 0){
double x4 = -c / b;
System.out.println("方程只有一个解: " + x4);
}else{
System.out.println("不是方程");
}
}
}
[补数学开方表示]
Math.sqrt(需要开方的变量)
第七题
方法一
利用case穿透,switch中case不加break
package exercise.day03;
import java.util.Scanner;
public class exercise7_1 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//分别录入月和日
System.out.println("请输入月份: ");
int month = sc.nextInt();
System.out.println("请输入日期: ");
int date = sc.nextInt();
//定义天数
int day = 0;
//累加[1, month - 1]个月满月天数
switch (month) {
case 12:
//累加到1-11月
day = day + 30;//11月天数
//没有break, 继续往下走
case 11:
//累加到1-10月
day = day + 31;//10月天数
//没有break, 继续往下走
case 10:
day = day + 30;
case 9:
day = day + 31;
case 8:
day = day + 31;
case 7:
day = day + 30;
case 6:
day = day + 31;
case 5:
day = day + 30;
case 4:
day = day + 31;
case 3:
day = day + 28;
case 2:
day = day + 31;
case 1:
day = day + 0;
}
day = day + date - 1;
int week = 2 + day;
week = week % 7;
switch (week) {
case 1:
System.out.println(month + "月" + date + "日是星期一");
break;
case 2:
System.out.println(month + "月" + date + "日是星期二");
break;
case 3:
System.out.println(month + "月" + date + "日是星期三");
break;
case 4:
System.out.println(month + "月" + date + "日是星期四");
break;
case 5:
System.out.println(month + "月" + date + "日是星期五");
break;
case 6:
System.out.println(month + "月" + date + "日是星期六");
break;
case 0:
System.out.println(month + "月" + date + "日是星期日");
break;
}
}
}
方法二
在while中使用if判断加多少天
package exercise.day03;
import java.util.Scanner;
public class exercise7 {
public static void main(String[] args) {
//引入键盘录入
Scanner sc = new Scanner(System.in);
//提示用户输入月份
System.out.println("请输入月份: ");
int month = sc.nextInt();
//提示用户输入日期
System.out.println("请输入日期: ");
int date = sc.nextInt();
//定义天数
int day = (month - 1) * 31 + date - 1;
//定义i
int i = 1, j = 1;
//定义星期
int week = 0;
while(i < month){
if(month == 4 || month == 6 || month == 9 || month == 11){
day = day + 30;
}else if(month == 2){
day = day +28;
}else{
day = day + 31;
}
i ++;
}
week = (day + 2) % 7;
switch (week){
case 1:
System.out.println(month + "月" + date + "日是星期一");
break;
case 2:
System.out.println(month + "月" + date + "日是星期二");
break;
case 3:
System.out.println(month + "月" + date + "日是星期三");
break;
case 4:
System.out.println(month + "月" + date + "日是星期四");
break;
case 5:
System.out.println(month + "月" + date + "日是星期五");
break;
case 6:
System.out.println(month + "月" + date + "日是星期六");
break;
case 0:
System.out.println(month + "月" + date + "日是星期日");
break;
}
}
}
方法二有问题待更改!!!
简答题
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
能作用在byte和String上,不能作用在long上
因为switch默认为int型,long不能转化为int和char型,若强行转换,会造成数据丢失