1、输入一个字符,判断它是不是字母,是不是数字,是不是空格字符?
public static void main(String[] args) {
System.out.print("请输入一个字符:");
Scanner input = new Scanner(System.in);
char a = input.nextLine().charAt(0);
if ((a >= 65 && a <= 90) || (a >= 97 && a <= 122)) {
System.out.println("你输入的字符串为字母!");
} else if (a >= 48 && a <= 58) {
System.out.println("你输入的字符串为数字!");
} else if (a==32) {
System.out.println("你输入的字符串为空格字符!");
} else {
System.out.println("你输入的字符串不是字母,不是数字 也不是空格字符!");
}
}
2、输入一个整数,判断它是偶数还是奇数?
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
if (x%2==0){
System.out.println("您输入的是偶数!");
}else {
System.out.println("您输入的是奇数!");
}
}
3、企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
public static void main(String[] args) {
System.out.println("请输入当月利润:");
Scanner sc=new Scanner(System.in);
long x=sc.nextLong();
if (x<=1000000){
System.out.println(x*0.1);
}else if (x>1000000 && x<=2000000){
System.out.println(x*0.1+(x-1000000)*0.075);
}else if (x>2000000 && x<=4000000){
System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05);
}else if (x>4000000 && x<=6000000){
System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05+(x-4000000)*0.03);
}else if (x>6000000 && x<=10000000){
System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05+(x-4000000)*0.03+(x-6000000)*0.015);
}else {
System.out.println(x*0.1+(x-1000000)*0.075+(x-2000000)*0.05+(x-4000000)*0.03+(x-6000000)*0.015+(x-10000000)*0.01);
}
}
4、已知某年某月,问这个月共有多少天?
public static void main(String[] args) {
System.out.println("请输入年份:");
Scanner sr=new Scanner(System.in);
int x=sr.nextInt();
System.out.println("请输入月份:");
Scanner sr2=new Scanner(System.in);
int y=sr.nextInt();
if (y==2){
if (x%4==0 && x%100!=0 || x%400==0){
System.out.println(x+"年"+y+"月有:29天");
}else {
System.out.println(x+"年"+y+"月有:28天");
}
}else if (y==4 || y==6 || y==9||y==11){
System.out.println(x+"年"+y+"月有:30天");
}else {
System.out.println(x+"年"+y+"月有:31天");
}
}
5、已知某年某月某日,判断这一天是这一年的第几天?
public static void main(String[] args) {
System.out.println("请输入年份:");
Scanner sr1 = new Scanner(System.in);
int year = sr1.nextInt();
System.out.println("请输入月份:");
Scanner sr2 =new Scanner(System.in);
int month =sr2.nextInt();
System.out.println("请输入几号");
Scanner sr3 =new Scanner(System.in);
int day = sr3.nextInt();
int sum =0;
if (month>1){
for (int i=1;i<month;i++){
if (i==1 || i==3||i==5||i==7||i==8||i==10||i==12){
sum+=31;
}else if (i==4||i==6||i==9||i==11){
sum+=30;
}else{
if (year%4==0 && year%100!=0 || year%400==0){
sum+=29;
}else {
sum+=28;
}
}
}
}
System.out.println(year+"年"+month+"月"+day+"日是这一年的第"+(sum+day)+"天。");
}
6、输入一个正整数,判断它是不是质数?
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner sr=new Scanner(System.in);
int x=sr.nextInt();
int i;
for (i=2;i<x;i++){
if (x%i==0){
System.out.println(x+"不是质数");
break;
}
}
if (i==x){
System.out.println(x+"是质数");
}
}
7、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public static void main(String[] args) {
for (int a=1;a<=9;a++){
for (int b=0;b<=9;b++){
for (int c=0;c<=9;c++){
if ((a*a*a+b*b*b+c*c*c)==(a*100+b*10+c)){
System.out.println(a*100+b*10+c);
}
}
}
}
}
8、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第10月的兔子总数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21…
public static void main(String[] args) {
//方法一:
int x=0;
int y=1;
int z=0;
for (int i=2;i<=10;i++){
z=x+y;
x=y;
y=z;
System.out.println("第"+i+"个月共有兔子"+z*2+"只");
}
System.out.println("第十个月共有兔子"+z*2+"只");
//方法二:
int a=1;
int b=0;
for (int i=2;i<=10;i++){
a=a+b;
b=a-b;
System.out.println("第"+i+"个月共有兔子"+a*2+"只");
}
System.out.println("第十个月共有兔子"+a*2+"只");
}
9、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。
public static void main(String[] args) {
int x=1;
int y=0;
for(int i=1;i<10;i++){
y=2*(x+1);
x=y;
}
System.out.println("猴子第一天一共摘了"+y+"个桃子");
}
10、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
public static void main(String[] args) {
int x=1;
int y=0;
for(int i=1;i<10;i++){
y=2*(x+1);
x=y;
}
System.out.println("猴子第一天一共摘了"+y+"个桃子");
}