分支结构:
写出结果
class Demo{ public static void main(String[] args){ int m=0,n=3; if(m>0) if(n>2) System.out.println("A"); else System.out.println("B"); } }
//answer:没有结果
实现对三个整数进行排序,输出时按照从小到大的顺序输出。
public class Demo { public static void main(String[] args) { // 创建键盘输入三个整数 int num1 = 1; int num2 = 3; int num3 = 2; // 排序 if (num1 > num2) { int temp = num1; num1 = num2; num2 = temp; } if (num1 > num3) { int temp = num1; num1 = num3; num3 = temp; } if (num2 > num3) { int temp = num2; num2 = num3; num3 = temp; } // 输出 System.out.println("三个整数从小到大排列:" + num1 + " " + num2 + " " + num3); } }
编写程序,从键盘接收整数参数。如果该数为1-7,打印对应的星期值,否则打印“非法参数”。
import java.util.Scanner; class TestSwitch{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入星期值:"); int week = input.nextInt(); switch(week){ case 1: System.out.println("星期一:Monday"); break; case 2: System.out.println("星期二:Tuesday"); break; case 3: System.out.println("星期三:Wednesday"); break; case 4: System.out.println("星期四:Thursday"); break; case 5: System.out.println("星期五:Friday"); break; case 6: System.out.println("星期六:Saturday"); break; case 7: System.out.println("星期天:Sunday"); break; default: System.out.println("非法星期值"); break; } } }
从键盘分别输入年、月、日,判断这一天是当年的第几天
import java.util.Scanner;
class TestDaysOfYear{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("年:"); int year = input.nextInt(); System.out.print("月:"); int month = input.nextInt(); System.out.print("日:"); int day = input.nextInt(); int days = day; //加前面几个月的满月天数 switch(month){ case 12: //前面11个月的总天数 //days += 第11月的天数; days += 30; case 11: //前面10个月的总天数 //days += 第10月的天数; days += 31; case 10: days += 30;//九月 case 9: days += 31;//八月 case 8: days += 31;//七月 case 7: days += 30;//六月 case 6: days += 31;//五月 case 5: days += 30;//四月 case 4: days += 31;//三月 case 3: days += 28;//二月 /*if(闰年){ days++; } */ if(year % 4 ==0 && year % 100 != 0 || year%400==0){ days++; } case 2: days += 31;//一月 } System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + days + "天"); /* int days = 0; switch(month){ case 1: days = day; break; case 2: days = 31 + day; break; case 3: //days = 31 + 二月的天数 + day; days = 31 + 28 + day; break; case 4: //days = 31 + 二月的天数 + 31 + day; days = 31 + 28 + 31 + day; break; .... } if(闰年 && month >2){ days++; } */ } }
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是
int、 short、 char 或者 byte。long不能作用于swtich.JDK1.7新加入了String类型。
编写程序,判断给定的某个年份是否是闰年
闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年。
提示:
if((year % 4 ==0 && year % 100 != 0) || year % 400 == 0){ }
要求用户输入两个数a和b,如果a能被b整除或者a加b大于1000,则输出a;否则输出b。
public class compare { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("a:"); int a = input.nextInt(); System.out.print("b:"); int b = input.nextInt(); if(a%b==0||(a+b)>1000) System.out.println(a); else { System.out.println(b); } input.close(); } }
使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
提示:先声明两个变量,一个是char型的,用来存放用户名,一个是int型的,用来存放密码。
编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:
score>=90 等级:A
70=<score<90 等级:B
60=<score<70 等级:C
score<60 等级:D
import java.util.Scanner; class Exam1{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入学生的成绩:"); int score = input.nextInt(); if(score>=90){ System.out.println("等级:A"); }else if(score>=70){ System.out.println("等级:B"); }else if(score>=60){ System.out.println("等级:C"); }else{ System.out.println("等级:D"); } /* if(score>=90){ System.out.println("等级:A"); }else if(score<90 && score>=70){ System.out.println("等级:B"); }else if(score<70 && score>=60){ System.out.println("等级:C"); }else{ System.out.println("等级:D"); } */ } }
根据指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
import java.util.Scanner; class TestSeason{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入当前月份:"); int month = input.nextInt(); switch(month){ case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; default: System.out.println("非法月份"); } } }
求ax2+bx+c=0方程的根。
求ax2+bx+c=0方程的根。a,b,c分别为函数的参数,
如果a≠0,那么:
(1)当b2-4ac>0,则有两个解;
(2)当b2-4ac=0,则有一个解;
(3)当b2-4ac<0,则无解;
如果a=0,b≠0,那么, x = -c/b
提示1:Math.sqrt(num); sqrt指平方根
例如:
求x2-4x+1=0方程的根
求x2-2x+1=0方程的根
import java.util.Scanner; class Exer5{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("一元二次方程:ax^2+bx+c=0"); System.out.print("请输入参数a:"); double a = input.nextDouble(); System.out.print("请输入参数b:"); double b = input.nextDouble(); System.out.print("请输入参数c:"); double c = input.nextDouble(); if(a!=0){ double temp = b*b - 4*a*c; if(temp==0){ double x = -b/(2*a); System.out.println("该方程是一元二次方法,有两个相同解:" + x); }else if(temp>0){ double sqrt = Math.sqrt(temp); double x1 = (-b+ sqrt)/(2*a); double x2 = (-b- sqrt)/(2*a); System.out.println("该方程是一元二次方法,两个不同解:" + x1 +"," + x2); }else{ System.out.println("该方程是一元二次方法,在实数范围内无解!"); } }else{ if(b!=0){ double x = -c/b; System.out.println("该方程是一元一次方程,有一个解:" + x); }else{ System.out.println("不是方程,是一个等式"); if(c == 0){ System.out.println("等式成立"); }else{ System.out.println("等式不成立"); } } } } }
彩票游戏
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
提示:使用Math.random() 产生随机数
Math.random() 产生[0,1)范围的随机值
Math.random() * 90:[0,90)
Math.random() * 90 + 10:[10,100) 即得到 [10,99]
使用(int)(Math.random() * 90 + 10)产生一个两位数的随机数。
class TestCaiPiao{ public static void main(String[] args){ //1、随机产生一个两位数 //System.out.println(Math.random());//产生[0,1) int number = (int)(Math.random()*90 + 10);//得到[10,99],即[10,100) //System.out.println(number); int numberShi = number/10; int numberGe = number%10; //2、用户输入一个两位数 Scanner input = new Scanner(System.in); System.out.print("请输入一个两位数:"); int guess = input.nextInt(); int guessShi = guess/10; int guessGe = guess%10; if(number == guess){ System.out.println("奖金10 000美元"); }else if(numberShi == guessGe && numberGe == guessShi){ System.out.println("奖金3 000美元"); }else if(numberShi==guessShi || numberGe == guessGe){ System.out.println("奖金1 000美元"); }else if(numberShi==guessGe || numberGe == guessShi){ System.out.println("奖金500美元"); }else{ System.out.println("没中奖"); } System.out.println("中奖号码是:" + number); } }
赌数游戏
提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。
如果三个骰子点数和,小于或等于9,则为“小”。
如果三个骰子点数和,大于9,则为“大”。
用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。
import java.util.Scanner; class GuessNumber{ public static void main(String[] args){ //1、产生一个[1-6]的数 int a = (int)(Math.random()*6+1); //System.out.println(a); int b = (int)(Math.random()*6+1); //System.out.println(b); int c = (int)(Math.random()*6+1); //System.out.println(c); /* a = 1; b = 1; c = 1; */ String result = ""; if(a==b && b==c){ result = "豹子"; }else if(a+b+c <=9 ){ result = "小"; }else{ result = “大”; } //2、用户输入猜的结果 Scanner input = new Scanner(System.in); System.out.print("请押宝,买定离手:(选择:大、小、豹子)"); String guess = input.next(); //3、判断结果 if(result.equals(guess)){ System.out.println("猜对了"); }else{ System.out.println("猜错了"); } } }
生肖问题
编写一个程序,为一个给定的年份找出其对应的中国生肖。
中国的生肖基于12年一个周期,每年用一个动物代表:
rat(鼠)、ox(牛)、tiger(虎)、rabbit(兔)、dragon(龙)、snake(蛇)、horse(马)、sheep(羊)、monkey(候)、rooster(鸡)、dog(狗)、pig(猪)。
提示:2019年:猪 2019 % 12 == 3
import java.util.Scanner; class ShengXiaoTest{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入年份:"); int year = input.nextInt(); switch(year%12){ 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; case 9: System.out.println("蛇年"); break; case 10: System.out.println("马年"); break; case 11: System.out.println("羊年"); break; } } }
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答案一:switch可以作用在byte上,不能作用在long上,JDK1.7之后可以作用在String上。
答案二:switch支持的类型byte,short,int,char,JDK1.5之后支持枚举,JDK1.7之后支持String类型。
What is the result when you compile and run the following code?
public static void main(String[] args) { int a = 3; int b = 1; if(a = b){ System.out.println("Equal"); }else{ System.out.println("Not Equal"); } } 答案:编译不通过
循环结构:
What is the result when you compile and run the following code?
public class Test{ public void method(){ for(int i = 0; i < 3; i++) { System.out.print(i); } System.out.print(i); } }
A. 0122
B. 0123
C. compile error
D. none of these
答案:C
打印1-100之间13的倍数,使用for循环
public class demo13 { public static void main(String[] args) { int i; for(i =13;i<100;i++) { if(i%13==0) { System.out.println(i); } } } }
用for循环计算1000以内偶数的和
public class Sum { public static void main(String[] args) { int i,sum=0; for(i=1;i<1000;i++) { if(i%2==0) { sum+=i; } } System.out.print(sum); } }
1)输入长和宽,输出长方形,如:输入4和3, 将输出如下图形
2)输入高度,输出直角三角形。如:输入4, 将输出如下图形
3)输入高度,输出倒直角三角形。如:输入4, 将输出如下图形
打印九九乘法表
public static void main(String[] args) { for(int i =1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j) + "\t"); } System.out.println(); } }
3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。
public static void main(String[] args) { int day = 0; for (int x = 3000; x >= 5; x /= 2) { day++; } System.out.println("day=" + day); /* * 方法二: * day = 0; * for(int x=3000; x>=5; day++) { * x = x/2; * } * System.out.println(day); */ }
打印1-100之间非13的倍数,使用continue语句
用循环控制语句打印输出:1+3+5+…+99=?的结果
答案一:
public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 99; i+=2) { sum += i; } System.out.println("sum = " + sum); }
答案二:
public static void main(String[] args) { int sum = 0; for (int i = 1; i < 100; i++) { if (i % 2 != 0) { sum += i; } } System.out.println("sum = " + sum); }