好,所以过去3天我整天都在从事这项工作,但是我没有任何运气。我本来不想寻求帮助,但我最终放弃了。但是我还需要对代码实施另一件事。这就是我要实现的“查找数组数据中最长的连续正数序列的长度。如果内容为: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));
}
}
答案 0 :(得分:1)
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;
}
使用的逻辑:
将遇到的最长链的长度和当前链的长度保留在两个单独的变量中(分别为Greeststnum和greatestLen)
每遇到一个正数,就将greatLen递增。如果该数字小于或等于零,请重置此计数。
如果当前链的长度大于先前的最长链,则将最长链的大小发送到当前链的大小。
答案 1 :(得分:1)
问题是您创建了一个带有随机数的列表,但从未将该列表放入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;
}
答案 2 :(得分:0)
如果要按顺序排列数字,只需使用java.util.TreeSet
。然后使用方法last()
获得最大的数字。
public static int findLargest(ArrayList<Integer> nums) {
return new TreeSet<Integer>(nums).last();
}