Java编程练习会的回答一下

定义一个长度为20的数组,元素为20-40的随机数, 要求判断指定元素在数组中出现的次数,指定元素为键盘录入范围为20-40之间。

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

public class RndTest {
//	定义一个长度为20的数组,元素为20-40的随机数, 要求判断指定元素在数组中出现的次数,指定元素为键盘录入范围为20-40之间。
	public static void main(String[] args) {
		Random rnd = new Random();
		Scanner in = new Scanner(System.in);
		int count = 0;
		int a[] = new int[20];
		for(int i=0;i<20;i++) {
			//确保在20~40直接的整形数
			a[i] = rnd.nextInt(20)+20;
			System.out.print(a[i] + "\t");
		}
		System.out.println("\n请输入一个数:");
		int num = in.nextInt();
		if(num<20 || num>40) {
			System.out.println("输入错误,请确保数字在20~40之间");
			System.exit(0);
		}
		
		for(int i = 0;i<20;i++) {
			if(a[i]==num) {
				count++;
			}
		}
		System.out.println(num+"出现的次数是:"+count);
	}
}

 

package com.sxt.pojo;

import java.util.Objects;

/**
 * 记录用户之前输入过的数字
 */
public class Node {

    /**
     * 之前输入过的数字
     */
    private int key=0;

    /**
     * 这个数字出现的次数
     */
    private int value=0;

    public Node() {
    }

    public Node(int key, int value) {
        this.key = key;
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Node node = (Node) o;
        return key==node.getKey();
    }

    @Override
    public int hashCode() {
        return Objects.hash(value);
    }

    @Override
    public String toString() {
        return "Node{" +
                "key=" + key +
                ", value=" + value +
                '}';
    }

    public int getKey() {
        return key;
    }

    public void setKey(int key) {
        this.key = key;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}
package com.sxt.demo;

import com.sxt.pojo.Node;

import java.util.Scanner;

/**
 * 代码演示
 * 这个用容器更好实现点,就用数组的话还是有点麻烦
 */
public class Demo {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            //定义变量记录用户需要输入多少个数字
            int inputCount = 20;
            //定义变量存放用户之前输入过的所有数字以及这些数字出现的次数
            Node[] hasFoundNumbers = new Node[inputCount];
            //定义数组时要提前指定数组的大小,但我们无法提前判断用户会输入多少个不同的数字,因此我们把数组成员的个数设置的和用户需要输入的数字一样多,这样就足够用了
            //记录最后一个新数字在数组中的下标
            int lastNumberIndex = -1;
            System.out.println("请输入20个数字,范围在20到40之间,稍后将统计每个数字出现的次数");

            //循环获取20次用户输入的数字
            for (int i = 0; i < inputCount; i++) {
                //获取用户新输入的数字
                    int newInputNumber = scanner.nextInt();

                //判断用户输入的数字是否在20到40之间
                if (newInputNumber < 20 || newInputNumber > 40) {
                    System.out.println("请输入20到40之间的数字,您还可以输入" + (inputCount - i) + "个数字");
                    i = i - 1;
                    continue;
                }

                System.out.println("您输入的数字是" + newInputNumber + "您还可以输入" + (inputCount - i - 1) + "个数字");
                //创建变量记录用户现在输入的这个数字,之前是否输入过
                boolean hasFound = false;
                //将用户新输入的数字和用户之前输入的每一个数字进行比较,看看是否有重复的
                for (int checkIndex = 0; checkIndex <= lastNumberIndex; checkIndex++) {
                    //发现之前有输入过这个数字
                    if (hasFoundNumbers[checkIndex].getKey() == newInputNumber) {
                        //将该数字出现的次数加1
                        Node equalsNumber = hasFoundNumbers[checkIndex];
                        equalsNumber.setValue(equalsNumber.getValue() + 1);
                        //使用变量记录这个数字之前已经输入过
                        hasFound = true;
                        break;
                    }
                }

                //之前没有输入过这个数字
                if (!hasFound) {
                    //将这个数字添加到新发现的数字中,键就是新输入的数字,值就是这个数字出现的次数
                    hasFoundNumbers[lastNumberIndex + 1] = new Node(newInputNumber, 1);
                    lastNumberIndex++;
                }

            }

            for (int i = 0; i <= lastNumberIndex; i++) {
                System.out.println(hasFoundNumbers[i].getKey() + "出现了" + hasFoundNumbers[i].getValue() + "次");
            }
        } catch (Exception e) {
            System.out.println("非法输入,程序结束");
        }
    }
}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632