扫描对于int我有一个分配以使其内容如下 - 读的2n号作为输入,其中第一个数字代表一个键和第二个同样的值。这两个数字都是整数类型。错误,同时使用扫描仪类
写一个函数getAverageOfOdd找出它的键由奇数代表的所有值的平均值。假设平均值是一个整数,从不是十进制数。将平均值作为输出返回。在类UserMainCode中包含此函数。
在一类主要其将用于读出的2n号码并建立HashMap中。调用UserMainCode中的静态方法。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class MasteringHashmap
{
public static void main(String args[])
{
String number;
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
//get next 2n numbers i.e n key value pairs using getValues() function into a hashmap
HashMap<Integer,Integer> map = getValues(n);
int out = UserMainCode.getAverageOfOdd(map);
System.out.println(out);
//fill your code here
}
static HashMap<Integer,Integer> getValues(int n)
{
Scanner sc = new Scanner(System.in);
HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
for(int i=1;i<=n;i++)
{
int k = sc.nextInt();
int v = sc.nextInt();
hm.put(k, v);
}
return hm;
}
}
class UserMainCode {
public static int getAverageOfOdd(HashMap<Integer,Integer>h1)
{
//fill your code here
Set<Integer> keys = h1.keySet();
Iterator<Integer> it = keys.iterator();
int key,count=0,sum=0;
while(it.hasNext())
{
if((key=it.next())%2!=0)
{
count++;
sum+=h1.get(key);
}
}
return sum/count;
//return 0;
}
}
当我跑我的笔记本电脑这个代码运行良好,但不知何故在线法官与以下错误
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at MasteringHashmap.main(MasteringHashmap.java:14)
可能是什么原因响应?
这是毫无关系的错误,但你的'map'为null,并且你将它传递给一个方法尝试调用它的方法。 –
网上裁判是否提供关于他们如何运行的细节?似乎他们可能以您的代码不期望的方式提供输入。 – BPS
@Aominè我已经编辑了代码,实际上getValues()方法仅用于此目的,但忘记将其添加到main()函数中。 – lawk