簡體   English   中英

無法從20個隨機生成的數字中打印最大的數組數字

[英]Having trouble in printing the largest array number from the 20 randomly generated numbers

好吧,過去三天我整天都在從事這項工作,但是我沒有任何運氣。 我本來不想尋求幫助,但我最終放棄了。 但是我還需要對代碼實施另一件事。 這就是我要實現的“查找數組數據中最長的連續正數序列的長度。如果內容為:4 5 0 2 ... -1 88 78 66 -6。長度為3。對於這個問題,“ 0被認為是非負但不是正”。 另外,我有一個問題,我無法打印20個數組中最大的int。

import java.util.Random;
import java.util.ArrayList;
public class arrayops {

public static int findLargest(ArrayList<Integer> nums) {
      int greatestnum = nums.get(0);
      for (Integer item : nums) {
          if (item > greatestnum) {
              greatestnum = item;
          }
      }
      return greatestnum; 
  }
  public static int randomData(ArrayList<Integer> nums) {
      int[] array = new int [20];
      Random random = new Random();
      for (int i = 0; i < array.length; i++) {
          array[i] = -100 + random.nextInt(201);
      }
      return -100 + random.nextInt(201);
  }

  public static void main(String[] args) {
      ArrayList<Integer> nums = new ArrayList<Integer>();
      nums.add(1);
      nums.add(4);
      nums.add(13);
      nums.add(43);
      nums.add(-25);
      nums.add(17);
      nums.add(22);
      nums.add(-37);
      nums.add(29);
      System.out.println("The Greatest Number from the hardcoded numbers " + findLargest(nums));
      System.out.println("The Greatest number from the random numbers " + randomData(nums));
     }
    } 

findLargest方法:

public static int findLargest(ArrayList<Integer> nums) {
  int greatestnum = 0;
  int greatestLen = 0;
  for (Integer item : nums) {
      if (item > 0) {
          greatestLen++ ;
          if(greatestLen > greatestnum)
              greatestnum = greatestLen;
      }
      else
          greatestLen = 0;
  }
  return greatestnum; 
}

使用的邏輯:

  1. 將遇到的最長鏈的長度和當前鏈的長度保存在兩個單獨的變量中(分別為greatestnum和estestLen)

  2. 每次遇到正數時,將maximumLen遞增。 如果數字小於或等於零,請重置此計數。

  3. 如果當前鏈的長度大於先前的最長​​鏈,則將最長鏈的大小發送到當前鏈的大小。

問題是您創建了一個帶有隨機數的列表,但從未將該列表放入findLargest方法中。 您也從未創建過查找連續正數的方法。 如果您不知道如何編碼,建議您在紙上畫出一種算法。

ArrayList中的最大值...

public static int findL(ArrayList<Integer> nums)
{
    int top = nums.get(0);
    for(int i = 0; i<nums.size(); i++)
    {
        if(nums.get(i)>top)
        {
            top = nums.get(i);
        }
    }
    return top;
}

連續正數最多...

public static int positiveString(ArrayList<Integer> nums)
{
    int longest = 0;
    int count = 0;
    for(int i = 0; i<nums.size(); i++)
    {
        if(nums.get(i) > 0)
        {
            count++;
        }
        else
        {
            if(longest<count)
            {
                longest = count;
            }
            count = 0;
        }
    }
    return longest;
}

如果要按順序排列數字,可以簡單地使用java.util.TreeSet 然后使用方法last()獲得最大數量。

public static int findLargest(ArrayList<Integer> nums) {
    return new TreeSet<Integer>(nums).last();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM