1.输入字符串,分别获取字符串的字符数,数字数,空格数,其他字符数
示例:
输入:
zhangliang...123 89
输出:
字母数=10,数字数=5,空格数=1,其他字符数=3
思路:将字符串转换为字符数组,遍历数组,比较每一个元素值
代码:
package demo;
import java.util.Scanner;
public class Demo7 {
public static void main(String[] args) {
int x=0;int y=0;int z=0;int d=0;
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
char[] a = s.toCharArray();
for (int i = 0; i<a.length;i++ ){
if (a[i]>='A'&&a[i]<'Z'||a[i]>='a'&&a[i]<='z'){
x++;
} else if (a[i]>='0'&&a[i]<='9') {
y++;
}else if (a[i]==' '){
z++;
}else {
d++;
}
}
System.out.println("字母数="+x+","+"数字数="+y+","+"空格数="+z+","+"其他字符数="+d);
}
}
2.输入年月日,获取该日在该年份的第几天
示例:
输入:
2023 1 1
输出:
1
思路:先判断该年是否为闰年,确定2月的天数,再根据输入的月份使用switch语句按月份进行相应天数的相加
代码:
package demo;
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int y = scanner.nextInt();
int m = scanner.nextInt();
int d = scanner.nextInt();
int fed = 28;
if (y / 4 == 0 && y / 1000 != 0 || y / 400 == 0) {
fed = 29;
}
int sum = 0;
switch (m) {
case 1:
sum = d;
break;
case 2:
sum = d + fed;
break;
case 3:
sum = 31 + fed + d;
break;
case 4:
sum = 31 * 2 + fed + d;
break;
case 5:
sum = 31 * 2 + 30 + fed + d;
break;
case 6:
sum = 31 * 3 + fed + 30 + d;
break;
case 7:
sum = 31 * 3 + fed + 30 * 2 + d;
break;
case 8:
sum = 31 * 4 + fed + 30 * 2 + d;
break;
case 9:
sum = 31 * 5 + fed + 30 * 2 + d;
break;
case 10:
sum = 31 * 5 + fed + 30 * 3 + d;
break;
case 11:
sum = 31 * 6 + fed + 30 * 3 + d;
break;
case 12:
sum = 31 * 7 + fed + 30 * 4 + d;
break;
}
System.out.println(sum);
}
}
自我吐槽:笔试时写的乱七八糟的,判断符都写错,明明是>=被我写成=>,唉,月份题也忘记给每个语句加break,2月份也没定义,大概率凉凉。