package p1;
import java.util.Scanner;
import java.util.Random;
public class Test { /**
 * @param args 实训第一周项目考试
 */
public static void main(String[] args) {
//小项目:游戏场景天气情况模拟
  /**  游戏场景以及相关的天气情况如下
   *   游戏场景    天气情况
   *    山庄       晴天
   *    草原       晴天,暴雨,高温                 随机一种
   *    沙漠       晴天,暴雨,大风,沙尘暴,高温    随机一种
   *    皇陵       晴天,暴雨,沙尘暴,高温         随机一种
   *  特殊要求如下:1: 高温出现的时间间隔为2天  如1号出现那么2号3号
   *  不能出现高温
   *               2:沙尘暴出现的间隔为 5天
   *               3:大风天气出现的时间间隔为3天
   *               4:每天控制台打印出4个场景的天气情况,4个场景的天
   *               情况可以相同,但是连续运行2次应该有所差别
   *               5:打印天数用户控制台输入月份
   *               注意大月31天,小月30天 2月28天 如输入1月打印31天的天气情况
   *               6:打印输出控制台后需要提示是否还要相关月份打印,是重新开始 否结束
   *               7:控制台输出格式如下:
   *               1号
   *               山庄       晴天
   *               草原       晴天
   *               沙漠       高温
   *               皇陵       沙尘暴
   *               2号
   *               山庄       晴天
   *               草原       晴天
   *               沙漠       暴雨
   *               皇陵       高温
   *               
   *               
   *               
   */
//java的控制台输入类
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个整数\tnum");
int num=scanner.nextInt();//控制台读取一个整数
System.out.println("num="+num);
System.out.println("请输入一个字符串\tstr");
String str=scanner.next();//控制台读取一个字符串
System.out.println("str="+str);
    //java生成随机数
Random random=new Random();
 int r= random.nextInt(5);//获得一个5以内随机数 最小是0

 System.out.println("生成的随机数为:\t"+r);


}}

解决方案 »

  1.   

    package diye;import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    import java.util.Scanner;public class test2 { public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner scanner = new Scanner(System.in);
    List address = new ArrayList();
    address.add("山庄");
    address.add("草原");
    address.add("沙漠");
    address.add("皇陵");
    String tq[] = { "晴天", "暴雨", "高温", "沙尘暴", "大风" }; for (;;) {
    System.out.println("请输入一个月份:\t");
    int num = scanner.nextInt();// 控制台读取一个整数
    int day = 0; switch (num) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    day = 31;
    break;
    case 2:
    day = 28;
    break;
    default:
    day = 30; }
    /**
     * //java生成随机数 Random random=new Random(); int r=
     * random.nextInt(5);//获得一个5以内随机数 最小是0
     * 
     * System.out.println("生成的随机数为:\t"+r);
     */
    int cygw = 0;
    int czb = 0;
    int df = 0;
    for (int i = 0; i < day; i++) {// i是号数
    System.out.println("=======================");
    System.out.println(i + 1 + "号");
    System.out.println("场景\t" + "天气"); for (int j = 0; j < 4; j++) {// j是地此的位置 System.out.print(address.get(j) + "\t");
    // 山庄
    if (j == 0) {
    System.out.println(tq[0]);
    }
    // 草原 if (j == 1) {
    // System.out.println(tq[1]);
    Random random = new Random();
    int r = random.nextInt(3);// 3以内的随机数 r 就是数组里面的索引
    // 在数组里就只能前3 个 晴天,暴雨,高温
    String caoyuang = tq[r];
    // 第一是高温
    if (caoyuang.equals("高温") && cygw == 0) {
    cygw = 3;
    }
    if (caoyuang.equals("高温") && cygw < 3) { do {
    r = random.nextInt(3);
    caoyuang = tq[r];
    } while (caoyuang.equals("高温"));
          
    }
    cygw--;
    System.out.println(caoyuang);
    }
    // 沙漠 if (j == 2) { Random random = new Random();
    int r = random.nextInt(5);// 3以内的随机数 r 就是数组里面的索引
    // "晴天", "暴雨", "高温", "沙尘暴", "大风"
    String caoyuang = tq[r];
    // 第一是高温
    if (caoyuang.equals("高温") && cygw == 0) {
    cygw = 3; }
    if (caoyuang.equals("高温") && cygw < 3) { do {
    r = random.nextInt(5);
    caoyuang = tq[r];
    } while (caoyuang.equals("高温")); }
    cygw--; // 沙
    if (caoyuang.equals("沙尘暴") && czb == 0) {
    czb = 6;
    }
    if (caoyuang.equals("沙尘暴") && czb < 6) { do {
    r = random.nextInt(5);
    caoyuang = tq[r];
    } while (caoyuang.equals("沙尘暴"));
    }
    czb--;
    System.out.println(caoyuang);
    }
    // 皇陵 if (j == 3) {
    Random random = new Random();
    int r = random.nextInt(4);// 4以内的随机数 r 就是数组里面的索引
    // 在数组里就只能"晴天", "暴雨", "高温", "沙尘暴",
    String caoyuang = tq[r];
    // 第一是高温
    if (caoyuang.equals("高温") && cygw == 0) {
    cygw = 3;
    }
    if (caoyuang.equals("高温") && cygw < 3) { do {
    r = random.nextInt(4);
    caoyuang = tq[r];
    } while (caoyuang.equals("高温")); }
    cygw--; // 沙
    if (caoyuang.equals("沙尘暴") && czb == 0) {
    czb = 6;
    }
    if (caoyuang.equals("沙尘暴") && czb < 6) { do {
    r = random.nextInt(4);
    caoyuang = tq[r];
    } while (caoyuang.equals("沙尘暴"));
    }
    czb--;
    // 大风 if (caoyuang.equals("大风") && df == 0) {
    df = 4;
    }

    if (caoyuang.equals("大风") && df < 4) { do {
    r = random.nextInt(4);
    caoyuang = tq[r];
    } while (caoyuang.equals("沙尘暴"));
    }
    df--;
    System.out.println(caoyuang);
    } }
    // System.out.println(i+1+"号");
    // System.out .print("山庄  \t");
    // System.out.println("晴天");
    //
    // System.out .print("草原   \t");
    // System.out.println("cy");
    //
    // System.out .print("沙漠   \t");
    // System.out.println("sm");
    //
    // System.out .print("皇陵   \t");
    // System.out.println("hl"); } System.out.println("是否继续!!!!!任意键继续,n退出 ");
    String str = scanner.next();// 控制台读取一个字符串
    if (str.equals("n")) {
    break; } }
    }
    }