程序逻辑(分支和循环)的练习和数组的一些练习
程序逻辑(分支和循环)
练习----猜数字
计算机出一个1-100之间的随机数,玩家输入猜测的数字,计算机会给出相应的提示:如果玩家猜测的数字大于计算机出的数字,则提示"小一点";如果玩家猜测的数字小于计算机出的数字,则提示"大一点";如果猜对了就给出恭喜信息和猜的次数,游戏结束。
package mt;
import java.util.Scanner;
/**
* 猜1-100的數
* @author Administrator
*
*/
public class CaiShuZi {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int correctAnswer=(int) (Math.random()*100+1);
int counter=0;
int thyAnswer;
do {
System.out.println("请输入你猜的数字:");
thyAnswer = sc.nextInt();
counter++;
if (thyAnswer == correctAnswer) {
System.out.println("恭喜你猜对了,你共猜了" + counter + "次");
} else if (thyAnswer > correctAnswer) {
System.out.println("你猜的数大了");
} else {
System.out.println("你猜的数小了");
}
} while (thyAnswer != correctAnswer);
sc.close();
}
}
练习-----人机猜拳
package mt;
import java.util.Scanner;
public class CaiQuan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int money=1000;
System.out.println("*****猜拳游戏*****\n"
+ "1.剪刀2.石头3.布");
do {
System.out.println("你的余额:"+money);
System.out.println("请下注:");
int nmb=sc.nextInt();
System.out.println("小子出招吧!");
int person=sc.nextInt();
int computer=(int) (Math.random()*3+1);
String a="",b="";
switch (person){
case 1:a=("你出剪刀");break;
case 2:a=("你出石头");break;
case 3:a=("你出布");break;
}
switch (computer){
case 1:b=(",电脑出剪刀");break;
case 2:b=(",电脑出石头");break;
case 3:b=(",电脑出布");break;
}
if (person>=3) {
money=0;
System.out.println("小子不按套路出牌,电脑一招如来神掌秒了你");
}
else if (person == computer) {
System.out.println(a + b + "\n 平局");
} else if ((person == 1 && computer == 3) || person == 2
&& computer == 1 || person == 3 && computer == 2) {
money +=nmb;
System.out.println(a + b + "\n 你赢了!");
} else {
money -=nmb;
System.out.println(a + b + "\n 电脑胜!");
}
} while (money>0);
System.out.println("钱输完了!!");
sc.close();
}
}
练习---Craps赌博游戏。
玩家摇两颗色子,如果第一次摇出了7点和11点,则玩家胜;如果第一次摇出了2点、3点、12点,则庄家胜;如果摇出其他点数,游戏继续,在继续的过程中,如果玩家摇出了第一次摇的点数,则玩家胜;如果摇出了7点,则庄家胜;否则游戏继续,直到分出胜负。
package mt;
import java.util.Scanner;
/**
* Graps 赌博游戏
* @author mt
*
*/
public class Game {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int money=1000;
do{
int chip=0;
System.out.println("玩家余額:"+money);
do{
System.out.println("請下注:");
chip=sc.nextInt();
}while(chip<=0 || chip>money);
int nmb1=(int)(Math.random()*6+1);//模拟仍色子
int nmb2=(int)(Math.random()*6+1);
int sum=nmb1+nmb2;//求出色子点数
System.out.println("玩家摇出了"+sum+"点");
boolean gameOver=true; //表示游戏是否结束的布尔值
switch (sum) { //判断胜负
case 7:
case 11:
money +=chip;
System.out.println("玩家胜!");
break;
case 2:
case 3:
case 12:
money -=chip;
System.out.println("庄家胜!");
break;
default:
gameOver=false; //第一次游戏还没完
}
while (!gameOver) { //只有没完就一直继续
nmb1=(int)(Math.random()*6+1);
nmb2=(int)(Math.random()*6+1);
int sum2=nmb1+nmb2;
System.out.println("玩家摇出了"+sum2+"点");
if (sum2==7) {
money -=chip;
System.out.println("庄家胜!");
gameOver=true;
}
else if (sum2==sum) {
money +=chip;
System.out.println("玩家胜!");
gameOver=true;
}
}
}while(money>0);
System.out.println("輸完了,你可以借錢再來,下個百萬富翁就是你!");
sc.close();
}
}
练习----21根火柴游戏。
桌上有21根火柴,人和计算机轮流拿火柴,每次最少1根,最多4根,谁拿到最后一根火柴谁就输了。编程模拟此游戏,每次都由人先拿,并保证计算机一定能够获得胜利。
package mt;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int max=21;
do{
System.out.println("剩余火柴的数量:"+max);
int person;
do {
System.out.print("请输入你拿火柴数(1~4):");
person = sc.nextInt();
} while (person<1||person>4 );
int computer=5-person;
System.out.println("你拿的火柴数是:"+person);
System.out.println("电脑拿的火柴数是:"+computer);
max=max-5;
}while(max!=1);
System.out.println("剩余火柴的数量是"+max+",你只能拿最后一根了,电脑赢了!");
sc.close();
}
}
练习---录入5名学生的成绩,计算平均分,找出最高分和最低分。
package mt;
/**
* 二维数组的应用
*/
import java.util.Scanner;
public class ErWei {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] names = {"德玛","关羽","赵信","吕布","赵云"};
String[] keMu = {"语文","数学","英语"};
int[][] score = new int[names.length][keMu.length];
for (int i = 0; i < score.length; i++) {
System.out.println("请录入"+names[i]+"的成绩");
for (int j = 0; j < score[i].length; j++) {
System.out.print("\t"+keMu[j]+":");
score[i][j]=sc.nextInt();
}
} //保持行不变,对应的列累加再除就是每个人的平均分
for (int i = 0; i < names.length; i++) {
int sum=0; //这里用double更好,平均数可能是小数,但我看到小数不爽,所以就没换
for (int j = 0; j < keMu.length; j++) {
sum += score[i][j];
}System.out.println(names[i]+"的平均分是:"+(sum/3));
} //算的是每个人的平均成绩
for (int j = 0; j < keMu.length; j++) { // 保持列不变,对应的行累加再除就是每科平均分
int sum=0; //同上
for (int i = 0; i < names.length; i++) {
sum += score[i][j];
}System.out.println(keMu[j]+"的平均分是:"+(sum/5));//算的是每科的平均分
}
sc.close();
}
}

浙公网安备 33010602011771号