Java基础练习之流程控制(二)
8、彩票游戏
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
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)产生一个两位数的随机数。
1 import java.util.Scanner; 2 3 public class TestCaiPiao{ 4 public static void main(String[] args){ 5 //1、随机产生一个两位数 6 //System.out.println(Math.random());//产生[0,1) 7 int number = (int)(Math.random()*90 + 10);//得到[10,99],即[10,100) 8 //System.out.println(number); 9 10 int numberShi = number/10; 11 int numberGe = number%10; 12 13 //2、用户输入一个两位数 14 Scanner input = new Scanner(System.in); 15 System.out.print("请输入一个两位数:"); 16 int guess = input.nextInt(); 17 18 int guessShi = guess/10; 19 int guessGe = guess%10; 20 21 if(number == guess){ 22 System.out.println("奖金10 000美元"); 23 }else if(numberShi == guessGe && numberGe == guessShi){ 24 System.out.println("奖金3 000美元"); 25 }else if(numberShi==guessShi || numberGe == guessGe){ 26 System.out.println("奖金1 000美元"); 27 }else if(numberShi==guessGe || numberGe == guessShi){ 28 System.out.println("奖金500美元"); 29 }else{ 30 System.out.println("没中奖"); 31 } 32 33 System.out.println("中奖号码是:" + number); 34 } 35 }
9、赌数游戏
提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。
如果三个骰子点数和,小于或等于9,则为“小”。
如果三个骰子点数和,大于9,则为“大”。
用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。
import java.util.Scanner; public 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); 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("猜错了"); } } }
10、生肖问题
编写一个程序,为一个给定的年份找出其对应的中国生肖。
中国的生肖基于12年一个周期,每年用一个动物代表:
rat(鼠)、ox(牛)、tiger(虎)、rabbit(兔)、dragon(龙)、snake(蛇)、 horse(马)、sheep(羊)、monkey(候)、rooster(鸡)、dog(狗)、pig(猪)。
提示:2019年:猪 2019 % 12 == 3
import java.util.Scanner; public 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; } } }
11、下面程序片段的输出结果是?
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"); } }
答案:编译不通过
12、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
13、执行如下代码后,c的值是多少?
public static void main(String[] args) { int a = 0; int c = 0; do { --c; a = a - 1; } while (a >= 0); System.out.println("c = " + c); }
14、以下代码的运行结果?
public static void main(String[] args) { int i=10; while(i>0){ i = i +1; if(i==10){ break; } } System.out.println("i=" + i); }
答案一:是一个负数,因为i一直累加会超过int的存储范围
答案二:死循环
15、修正如下代码
下面是一段程序,目的是输出10个=,但是不小心代码写错了,现在需要修改代码,使得程序完成功能,但是只能“增加”或“修改”其中“一个”字符,很明显,将i–改为i++,可以完成功能,但是需要修改“两个”字符,所以并不是一个正确的答案。
public static void main(String[] args) { int n=10; for (int i = 0; i < n; i--) { System.out.println("="); } }
答案:i<n修改为-i<n
修改前是死循环,修改后:
16、打印九九乘法表
1 public static void main(String[] args) { 2 for(int i =1;i<=9;i++){ 3 for(int j=1;j<=i;j++){ 4 System.out.print(j+"*"+i+"="+(i*j) + "\t"); 5 } 6 System.out.println(); 7 } 8 }