gpt4 book ai didi

java - Collections.max 不在循环中工作 : "java.util.NoSuchElementException"

转载 作者:行者123 更新时间:2023-12-02 03:15:42 25 4
gpt4 key购买 nike

public static void main(String args[])
{
ArrayList <Integer> seq = new ArrayList<Integer>();
Scanner kbReader = new Scanner(System.in);
int iterations = 0;
System.out.println("Enter a number sequence(no spaces, only commas)");
String j = kbReader.nextLine();
kbReader = new Scanner(j);
kbReader.useDelimiter("\\D");

//adds input to array list
while(kbReader.hasNextInt())
{
int i = kbReader.nextInt();
seq.add(i);
}

while(seq.size() > 0)
{
//removes zeros and numbers behind
if(seq.contains(0))
{
int zeroSearch = seq.lastIndexOf(0);
for(int c = zeroSearch; c >= 0; c--)
{
seq.remove(c);
}
iterations++;

}


//number operations
int largest = Collections.max(seq);
int largeLoc = seq.lastIndexOf(largest);

if(largest % 2 == 0)
{
largest = largest -2;
iterations++;
}
else
{
largest--;
iterations++;
}
seq.set(largeLoc, largest);
}

System.out.println(iterations + "moves" required);
}

由于某种原因,max 方法在此循环中不起作用并返回错误“java.util.NoSuchElementException”。说明为“给定一个数字序列,删除所有零(如果有)及其左侧的所有数字。然后找到最大的剩余数字,如果是偶数则减去 2,如果是奇数则减去 1如果两个或多个数字成为最大的数字,则使用最右边的数字作为最大的数字。对序列重复应用规则。需要移动多少次才能删除序列?”

最佳答案

在这种情况下,您可以阅读 java.util.Collections#max 的 javadoc 以了解为什么它会抛出该错误:

Throws:

NoSuchElementException - if the collection is empty.

Collections Javadoc

很明显seq是空的(意味着kbReader可能没有什么可读的)。将调试添加到您的代码中以更清楚地查看这一点(例如输入/输出)。

关于java - Collections.max 不在循环中工作 : "java.util.NoSuchElementException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40347713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com