zoukankan      html  css  js  c++  java
  • Java数组重修,猜数小游戏改进和打印正三角形

    数组重修,猜数小游戏

    要求:从键盘输入一个数,判断数组是否包含此数,运用随机数

    我们可能会这样写

    import java.util.Random;
    import java.util.Scanner;
    
    import org.junit.Test;
    
    /**
    * 数组示例:从键盘输入一个数,判断数组是否包含此数
    * @author fei
    */
    public class GuessNum {
    
    	@Test
    	public void guessNum() {
    		Random rand = new Random();// 产生随机数的工具,生成的是伪随机数
    
    		int[] sysNums = new int[5];// 准备长度为5的数组
    		int len = sysNums.length;// 保存数组的长度
    
    		for (int i = 0; i < len; i++) {// for循环为数组元素赋值
    			// 生成一个10以内的数并赋值给数组元素
    			sysNums[i] = rand.nextInt(10);
    		}
    
    		System.out.println("请输入一个你认为数组中存在的数:(10以内)");
    		Scanner input = new Scanner(System.in);// 接收用户的输入
    		int userNum = input.nextInt();
    
    		// 遍历数组,判断猜的数字是否存在于数组
    		for (int temp : sysNums) {
    			if (userNum == temp) {
    				System.out.println("恭喜,猜对了!");
    				break;
    			} else {
    				System.out.println("很遗憾,没猜对");
    			}
    		}
    	}// guessNum
    
    }
    

    输出结果:
    情况一:猜错

    情况二:猜对了

    我们看到,不管猜对,还是猜错,程序输出好多次提示信息,这不是我们想要的结果。

    下面是方法改进后的代码

    @Test
    public void guessNumPlus() {
    	Random rand = new Random();
    
    	// 定义数组并循环随机赋值
    	int[] sysNums = new int[5];
    	int len = sysNums.length;
    	for (int i = 0; i < len; i++) {
    		sysNums[i] = rand.nextInt(5);
    	}
    
    	// 提示并接收玩家输入
    	System.out.println("请输入一个你认为数组中存在的数:(10以内)");
    	Scanner input = new Scanner(System.in);
    	int userNum = input.nextInt();
    
    	// 循环遍历判断数组是否包含玩家猜的数,并以isRight标记是否猜中
    	boolean isRight = false;
    	for (int temp : sysNums) {
    		if (userNum == temp) {
    			isRight = true;
    			break;
    		}
    	}
    
    	// 根据标记输出相应提示信息
    	if (isRight) {
    		System.out.println("恭喜,猜对了!");
    	} else {
    		System.out.println("很遗憾,没猜对");
    	}
    }// guessNumPlus
    

    输出结果:
    情况一:猜对

    情况二:猜错

    终于ok,一切正常,舒服了

    当然,还有很多改进的地方,比如给几次机会,加上循环啥的

    数组重修,打印三角形

    import org.junit.Test;
    
    /**
     * i数组示例:打印正三角形
     * @author fei
     */
    public class PrintTriangle {
    
        @Test
        public void printTriangle() {
    	    // 定义一个字符数组
    	    char[] chars = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' };
    	    int len = chars.length;
    
        	    // 外循环控制行数
    	    for (int i = 1; i <= len; i++) {
    		    for (int j = i; j < len; j++) {
    			    // 输出空格
    			    System.out.print(" ");
    		    }
    		    for (int j = 1; j <= i * 2 - 1; j++) {
    			    System.out.print(chars[i - 1]);
    		    }
    		    System.out.println();
    	    }
        }
    
    }
    

    输出结果:

  • 相关阅读:
    洛谷.1110.[ZJOI2007]报表统计(Multiset Heap)
    洛谷.1110.[ZJOI2007]报表统计(Multiset)
    洛谷.3809.[模板]后缀排序(后缀数组 倍增) & 学习笔记
    洛谷.2801.教主的魔法(分块 二分)
    洛谷.2709.小B的询问(莫队)
    COGS.1901.[模板][国家集训队2011]数颜色(带修改莫队)
    COGS.1822.[AHOI2013]作业(莫队 树状数组/分块)
    COGS.1689.[HNOI2010]Bounce 弹飞绵羊(分块)
    COGS.264.数列操作(分块 单点加 区间求和)
    COGS.1317.数列操作c(分块 区间加 区间求和)
  • 原文地址:https://www.cnblogs.com/zxfei/p/10831333.html
Copyright © 2011-2022 走看看