Java 无法从20个随机生成的数字中打印最大的数组数

Java 无法从20个随机生成的数字中打印最大的数组数,java,arrays,methods,Java,Arrays,Methods,好的,所以我在过去的三天里整天都在做这个作业,但我没有任何运气。我本不想寻求帮助,但最终还是放弃了。但我还需要在代码中实现一件事。这就是我要实现的“查找数组数据中最长的正数连续序列的长度。如果内容为:4 5 0 2…-1 88 78 66-6。长度为3。对于这个问题,0被认为是非负的,但不是正的”。另外,我有一个问题,我不能打印20个数组中最大的整数 import java.util.Random; import java.util.ArrayList; public class arrayop

好的,所以我在过去的三天里整天都在做这个作业,但我没有任何运气。我本不想寻求帮助,但最终还是放弃了。但我还需要在代码中实现一件事。这就是我要实现的“查找数组数据中最长的正数连续序列的长度。如果内容为:4 5 0 2…-1 88 78 66-6。长度为3。对于这个问题,0被认为是非负的,但不是正的”。另外,我有一个问题,我不能打印20个数组中最大的整数

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));
     }
    } 
import java.util.Random;
导入java.util.ArrayList;
公共类数组{
公共静态int findLargest(ArrayList nums){
int greatestnum=nums.get(0);
用于(整数项:nums){
如果(项目>最大数量){
greatestnum=项目;
}
}
返回最大数量;
}
公共静态int-randomData(ArrayList nums){
int[]数组=新的int[20];
随机=新随机();
for(int i=0;i
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; 
}
publicstaticintfindlargest(arraylistnums){
int greatestnum=0;
int greatestLen=0;
用于(整数项:nums){
如果(项目>0){
greatestLen++;
如果(greatestLen>greatestnum)
greatestnum=greatestLen;
}
其他的
greatestLen=0;
}
返回最大数量;
}
使用的逻辑:

  • 将遇到的最长链的长度和当前链的长度保留在两个单独的变量(分别为greatestnum和greatestLen)中

  • 每次遇到正数时递增greatestLen。如果数字小于或等于零,则重置此计数

  • 如果当前链的长度大于上一条最长链,则将最长链大小发送到当前链大小


  • 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; 
    }
    
    publicstaticintfindlargest(arraylistnums){
    int greatestnum=0;
    int greatestLen=0;
    用于(整数项:nums){
    如果(项目>0){
    greatestLen++;
    如果(greatestLen>greatestnum)
    greatestnum=greatestLen;
    }
    其他的
    greatestLen=0;
    }
    返回最大数量;
    }
    
    使用的逻辑:

  • 将遇到的最长链的长度和当前链的长度保留在两个单独的变量(分别为greatestnum和greatestLen)中

  • 每次遇到正数时递增greatestLen。如果数字小于或等于零,则重置此计数

  • 如果当前链的长度大于上一条最长链,则将最长链大小发送到当前链大小


  • 如果你想把数字按顺序排列,你可以简单地使用。然后使用方法
    last()
    获取最大数字

    public static int findLargest(ArrayList<Integer> nums) {
        return new TreeSet<Integer>(nums).last();
    }
    
    publicstaticintfindlargest(arraylistnums){
    返回新树集(nums).last();
    }
    
    如果您想按顺序排列数字,只需使用即可。然后使用方法
    last()
    获取最大数字

    public static int findLargest(ArrayList<Integer> nums) {
        return new TreeSet<Integer>(nums).last();
    }
    
    publicstaticintfindlargest(arraylistnums){
    返回新树集(nums).last();
    }
    
    问题是您创建了一个带有随机数的列表,但从未将该列表放入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;
    }
    
    publicstaticintfindl(arraylistnums)
    {
    int top=nums.get(0);
    对于(int i=0;itop)
    {
    top=nums.get(i);
    }
    }
    返回顶部;
    }
    
    连续正片的最大数目

    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;
    }
    
    publicstaticintpositivestring(arraylistnums)
    {
    int=0;
    整数计数=0;
    对于(int i=0;i 0)
    {
    计数++;
    }
    其他的
    {
    
    如果(longest问题是你创建了一个包含随机数的列表,但从未将该列表放入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;
    }
    
    publicstaticintfindl(arraylistnums)
    {
    int top=nums.get(0);
    对于(int i=0;itop)
    {
    top=nums.get(i);
    }
    }
    返回顶部;
    }
    
    连续正片的最大数目

    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;
    }
    
    publicstaticintpositivestring(arraylistnums)
    {
    int=0;
    整数计数=0;
    对于(int i=0;i 0)
    {
    计数++;
    }
    其他的
    {
    
    如果(longest未给出randomData方法的用途,有一个列表作为未使用的参数,填充未使用的数组,只返回一个介于-100和100之间的随机数。请参阅:未给出randomData方法的用途,有一个列表作为未使用的参数,填充未使用的数组,只返回r。)eturn-100到100之间的随机数See的可能重复项:当变量表示“遇到的最长链的长度”时,为什么要命名变量
    greatestnum
    ?为什么不命名其他变量