A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高调高调 初级黑马   /  2019-3-12 10:06  /  839 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

技术贴
                                                      Java期     王亚军
2019.3.11
    由于对java学习时间很短,只学到了粗浅的皮毛,对于技术这一次的感触还不是很深.故现在技术贴的书写相对比较困难,只能潦草下笔,发表在下拙见.
     在下想写的内容来源于同桌的一道题:
请设计一个程序,要求程序出现选项,包括1\数组输入随机数,求和;2\生成随机数组排序;3\猜拳游戏,0,1,2分别表示石头,剪刀布,系统随机生成一个,自己再输入一个.猜拳直到自己不想再猜为止.
此题看似简单,但是对于本人来说,里面包含数组,导包,循环,判断,方法,函数的调用,对于此等境界的我而言,融目前所学内容为一体,不可谓不难.尤其是里面始终有一最大障碍,既不是自己定义的数,又不是固定长度的一些数,所以这点始终变化莫测,难以捉摸.但事在人为,本人思考前后,经过一番斟酌之后认为,虽随机产生数据不定,个数不同,但完全可由导入数据者自信进行控制,及增加一行程序,要求参与之人输入数量即可,然后程序可自行生成,截至当时,这一问题显然已经解决.但此题并非如此简单,方法内部既要键盘输入,又要随机产生,多条语句顺序错综复杂,互相影响,若有一句不当,则会导致全盘皆属,本人思前顾后,经多次总结纠正,才得一正确逻辑.程序编至第二题,发现程序执行异常困难,因数组有其二,知长度或知其内容,然二者均不知,何以解?(求助)
余最终得一程序如下:
package Lesson;

import java.util.Random;
import java.util.Scanner;

public class Practise6 {
    public static void main(String[] args) {
        System.out.println("请输入1,2,3中的其中一个数(1表示随机数组输入且求和,2表示随机数组排序,3表示猜拳游戏)");
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        switch (a) {
            case 1:
                int b = sum();
                System.out.println(b);
                break;
            case 2:
                int[] array2 = arrange();
                for (int m = 0; m <= array2.length - 1; m++)
                    System.out.println(array2[m]);
                break;
            case 3:
                guess();
                break;
        }
    /*请设计一个程序,要求
    程序出现选项,包括1\数组输入随机数,求和;2\生成随机数组排序;3\猜拳游戏,0,1,2分别表示石头,剪刀布,
    系统随机生成一个,自己再输入一个.猜拳直到自己不想再猜为止.;
    */
    }

    public static int sum() {
        //手动输入要排序的个数,且随机生成这些个数并打印出来
        Random r = new Random();
        System.out.println("请输入你要输入数字的个数");
        Scanner sc = new Scanner(System.in);
        int b = sc.nextInt();
        int sum = 0;
        for (int i = 0; i < b; i++) {
            int[] array1 = new int[b];
            int ra = r.nextInt(1000) + 1;
            System.out.println("生成的第" + (i + 1) + "个随机数是" + ra);
            array1[i] = ra;
            sum = sum + array1[i];
        }
        return sum;
    }

    public static int[] arrange() {
        //手动输入要排序的个数,且导入一个长度为c的数组
        Random ran = new Random();
        System.out.println("请输入你要输入数字的个数");
        Scanner sc = new Scanner(System.in);
        //c同时也表示数组长度
        int c = sc.nextInt();
        int[] array2 = new int[c];
        int i;
        //n在这个类里面的变量,因为它一直在变化
        int n = 1;
        for (i = 0; i <= c - 1; i++) {
            //随机生成c个数,并且导入数组当中
            int ra = ran.nextInt(1000) + 1;
            System.out.println("生成的第" + (i + 1) + "个数是:" + ra);
            array2[i] = ra;
            //创建一个指针,这个指针的作用是因为每次随机一个数,数组里面的内容就会加一,从而保证每循环完一次,就会多一次循环次数
            n++;
            for (int j = 0; j < n - 1; j++) {
                //循环的目的在于将每次近来的值和原先已经存放的值进行比较,按照从大到小进行排序
                if (i == 0) {
                    break;
                } else if (array2[j] < array2[i]) {
                    int d;
                    d = array2[j];
                    array2[j] = array2[i];
                    array2[i] = d;
                }
            }
        }
        return array2;
    }

    public static void guess() {
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你要猜的类型.注:0,1,2分别表示石头,剪刀,布");
            int s = sc.nextInt();
            Random r = new Random();
            int ra = r.nextInt();
            if ((s == 0 && ra == 1) || (s == 2 && ra == 0) || (s == 1 && ra == 2)) {
                System.out.println("你赢了");
            } else if ((s == 1 && ra == 0) || (s == 0 && ra == 2) || (s == 2 && ra == 1)) {
                System.out.println("你输了");
            } else {
                System.out.println("是平局");
            }
            System.out.println("您是否要退出循环(输入1表示是,输入0表示否)");
            int or = sc.nextInt();
            if (or == 1) {
            } else {
                break;
            }
        }
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马