在 20 个整数的数组中搜索并计算单个随机数

Posted

技术标签:

【中文标题】在 20 个整数的数组中搜索并计算单个随机数【英文标题】:Search and count for single random number in array of 20 integers 【发布时间】:2016-04-12 16:53:11 【问题描述】:

我有一个程序可以生成一个包含 20 个整数的数组。然后在同一跨度中产生一个随机数。我试图做的是搜索 20 个整数的数组并计算这个随机数出现的次数并打印结果,或者如果整数不存在以显示“不存在”。我觉得我很接近,但随机整数的计数不正确。先感谢您。搜索方法的范围: • 方法数据类型为 void,因为不会返回任何数据。

• 它将具有三个参数——整数数组、数组的大小以及它将在数组中搜索的值。

• 它将搜索数组并计算找到该值的次数。

• 然后它会打印出找到该值的次数或未找到该值的次数。

我的代码,如果缩进不正确,我很抱歉,仍在解决这个问题:

import java.util.Scanner;
import java.util.Random;
class Main
 public static final Random RND_GEN = new Random();
   public int[] createNum(int[] randomNumbers) 
    for (int i = 0; i < randomNumbers.length; i++) 
        randomNumbers[i] = RND_GEN.nextInt(10) + 1;
    
    return randomNumbers;


public void printNum(int[] randomNumbers)
    for (int i = 0; i < randomNumbers.length; i++) 
        System.out.println("Number " + i + " : " + randomNumbers[i]);
    
    System.out.println("Single # is: " + (RND_GEN.nextInt(10) + 1)); 


public void searchArray(int[] randomNumbers,int numSearch) 
int count = 0;
for (int i : randomNumbers) 
    if (i == numSearch) 
        count++;
    

if (count == 0) 
    System.out.println("Single #" + numSearch + " was not found!");
 else 
    System.out.println("Single # "+ numSearch + " was found " + count + "   times");






public void run() 
    Scanner inputReader = new Scanner(System.in);
    int x = 1;
    do 
        int[] numbers = new int[20];
        numbers = createNum(numbers);
        printNum(numbers);
        int numSearch = RND_GEN.nextInt(10) + 1;
        searchArray(numbers, numSearch);
        System.out.print("Restart Program?, Enter 1 for YES, 2 for NO: ");
        x = inputReader.nextInt();
     while (x == 1);


public static void main(String[] args) 
    Main go = new Main();
    go.run();


【问题讨论】:

【参考方案1】:

你快到了。您已经完成了创建搜索方法的工作,只是没有调用它。修改您的 searchArray 方法以在最后打印出出现次数,因为这是您的要求。

public void searchArray(int[] randomNumbers, int numSearch) 
    int count = 0;

    for (int i : randomNumbers) 
        if (i == numSearch) 
            count++;
        
    
    if (count == 0) 
        System.out.println("Single #" + numSearch + " was not found!");
     else 
        System.out.println("Single # "+ numSearch + " was found " + count + " times");
    

你可以这样称呼它:

searchArray(numbers, numSearch);

【讨论】:

由于整数是随机生成的,我如何确定要搜索的整数以及在找不到随机数时如何打印显示? @kidbone222,我进行了更新,以便在计数为 0 时打印出“未找到”消息。是的,您可以使用随机数作为参数,我更新了我的答案以反映您的想法这样做。 @robotlos 我知道调用我将放置在 void run 方法中的数组,但是完成后我收到一个错误,即找不到 numSearch 的符号。知道为什么会这样吗? @kidbone222, 你需要调用 searchArray(numbers, numSearch);在run() 方法中的int numSearch = RND_GEN.nextInt(10) + 1; 行之后。 谢谢你,在我回来之前我只是想通了,我会感谢你的。现在唯一的问题是我得到了一个 6 的 #,但它计算的是不同的数字,而不是 6 出现了多少次......奇怪@robotlos【参考方案2】:

您在run() 方法中犯了一个小错误:

int numSearch = RND_GEN.nextInt(10) + 1;
System.out.println("Number found this many times: "+ numSearch);

这会给你一个从 1 到 10 的随机数,但你想计算 numbers[0] 的实际出现次数,所以你必须使用你的 searchArray() 方法。

因此你必须添加一个返回类型并返回count

public int searchArray(int[] randomNumbers,int numSearch) 
        int count = 0;

        for(int i : randomNumbers) 
            if (i == numSearch) 
                count++;
            
        
    return count;
 

然后你得到你的计数:

int numSearch = searchArray(numbers, numbers[0]);

【讨论】:

不幸的是,我必须使用 void 而不是 int 来执行此操作,因为不会返回任何数据。以下是此方法的参数: 方法数据类型为 void,因为不会返回任何数据。 • 它将具有三个参数——整数数组、数组的大小以及它将在数组中搜索的值。 • 它将搜索数组并计算找到该值的次数。 • 然后它会打印出找到该值的次数或未找到该值的次数。 @迪米 然后把System.out.println()放到你的searchArray方法中,否则你不能访问局部变量count 但是您也可以像我在回答中所做的那样返回count,然后您可以检查if (count == 1),这意味着该数组不包含您要搜索的数字,因为第一个element 始终是您要搜索的数字。 @Dimi...我不确定你的意思,所以让它看起来像这样: public int searchArray(int[] randomNumbers,int numSearch) int count = 0; for(int i : randomNumbers) if (i == numSearch) count++; int numSearch = searchArray(数字, 数字[0]); System.out.println("找到单个#:"+ numSearch+"次"); 您是否在searchArray 方法结束时返回了count?然后它应该可以正常工作。【参考方案3】:

@Dimi 所以是这样的:

public int searchArray(int[] randomNumbers,int numSearch) 整数计数 = 0;

    for(int i : randomNumbers) 
        if (i == numSearch) 
            count++;
        
    
  int numSearch = searchArray(numbers, numbers[0]);
        System.out.println("Single # was found: "+ numSearch+" times");

【讨论】:

以上是关于在 20 个整数的数组中搜索并计算单个随机数的主要内容,如果未能解决你的问题,请参考以下文章

生成 20 个随机数并在数组中搜索数字的 C# 程序(续)

用随机数计算数组中出现的次数,没有方法或 C# 中的列表

python两个10以内的随机整数以第一个随机整数为半径第二个随机整数为高,计算并输出圆锥体的体积

python两个10以内的随机整数以第一个随机整数为半径第二个随机整数为高,计算并输出圆锥体的体积

VB程序设计,用随机函数产生10个50以内(包括50)的随机整数存入一维数组。求出最大值并和数组中的首个

以数组大小 20 打印随机数并以索引号打印数字