这是我第一次使用堆栈溢出,所以我很抱歉,如果这是格式不正确的任何方式。对于comp-sci项目,我必须对一个40项的随机数数组列表做一些不同的事情。
我正在努力完成的任务是:
数一数同一号码的最长行程。只有当连续的数字具有相同的值时,运行才会继续。然后打印重复编号和运行长度(例:最长行程为3,长度为5。)
如果有多个最大长度的梯段,则标记最后一个梯段。按以下方式打印带有最长行程标记的数组:1 1 6 5 4 6 3 2 3 2(3 3 3 3)1 5 6 3 4 4
我真的不知道如何处理这个问题。即使只是一些伪代码也会有帮助;我知道这些应该是两个不同的for循环,一个检测运行,另一个打印运行。我有一个朋友的代码,他用数组而不是数组列表完成了这个任务:
public String longestRun()
{
int maxRun=1;
int currentLen = 1;
int repeated = x[0];
for (int i =1; i< 40-1; i++)
{
if (x[i] == x[i+1])
currentLen++;
else
{
if (currentLen >= maxRun)
{
maxRun = currentLen;
repeated = x[i-1];
startRun = i-maxRun;
endRun = i-1;
}
currentLen = 1;
}
}
return "The longest run is " + maxRun + " and the repeated number is " + repeated ;
}
public String printParenth()
{
for(int i = 0; i<40; i++)
{
if(i != startRun+1 && i != endRun+1)
System.out.print(x[i]);
else if(i == startRun+1)
System.out.print("(" + x[i]);
else
System.out.print(x[i] + ")");
}
return "";
}
我知道如何创建arraylist,转换为string和print,等等,这只是一个任务,我不明白。考虑到arraylist方法的数量和实用性的增加,我假设使用arraylist会更容易。非常感谢,我真的很感激!
1条答案
按热度按时间jei2mxaa1#
把你的数字放在一个列表或一个数组中。
将max设置为1(您将始终至少有一个数字)。
初始化
count
到1。初始化变量
most
数组中的第一个数字同时设置变量
last
数组中的第一个数字。现在遍历从第二个数字开始的列表。
如果当前数字与上一个相同,则递增
count
.那就看看
count > max
.如果是的话
套
max
=count
.套
most
=last
如果不是的话套
count
= 1套
last
=当前编号以这种方式继续,直到检查完所有数字。
最后
most
将包含重复的数字和max
将包含重复的长度。