[英]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;
}
使用的邏輯:
將遇到的最長鏈的長度和當前鏈的長度保存在兩個單獨的變量中(分別為greatestnum和estestLen)
每次遇到正數時,將maximumLen遞增。 如果數字小於或等於零,請重置此計數。
如果當前鏈的長度大於先前的最長鏈,則將最長鏈的大小發送到當前鏈的大小。
問題是您創建了一個帶有隨機數的列表,但從未將該列表放入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.