Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在编译时收到警告_Java_Bluej - Fatal编程技术网

Java在编译时收到警告

Java在编译时收到警告,java,bluej,Java,Bluej,我正在编写一个它编译的程序,但是代码给了我一个警告,它使用了未经检查或不安全的操作。请使用-Xlint重新编译。我找不到错误。请帮助我解决这个问题 import java.io.*; import java.util.*; public class A1{ private HashMap<String,ArrayList<Integer>> data= new HashMap<String,ArrayList<Integer>>();

我正在编写一个它编译的程序,但是代码给了我一个警告,它使用了未经检查或不安全的操作。请使用-Xlint重新编译。我找不到错误。请帮助我解决这个问题

import java.io.*;
import java.util.*;
public class A1{

    private HashMap<String,ArrayList<Integer>> data= new HashMap<String,ArrayList<Integer>>();
    public  void main () throws IOException{
        BufferedReader ob=new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(ob.readLine());
        for(int i=0;i<t;i++){
            String a=ob.readLine();
            String spl[]= a.split(" ");
            ArrayList<Integer> inputs= new ArrayList<Integer>();
            for(int j=0;j<Integer.parseInt(spl[0]);j++){
            int prices=Integer.parseInt(ob.readLine());
            inputs.add(prices);
            }
            Collections.sort(inputs);
            data.put(spl[1],inputs);
        }
        Iterator iter = data.entrySet().iterator();
        while(iter.hasNext()){
            Map.Entry ele = (Map.Entry)iter.next();
            int fund=Integer.parseInt((String)ele.getKey());
            System.out.println(maxhouse(fund,(ArrayList<Integer>)ele.getValue()));
        }
    }
    int maxhouse(int fund,ArrayList<Integer> a){
        int sum=0;
        int c=0;
        for(int i=0;i<a.size();i++){
            sum=sum+a.get(i);
            if(sum<fund){
                c++;
            }
            else if(sum==fund){
                c++;
                break;
            }
            else{
                break;
            }
        }
        return c;
    }
}
import java.io.*;
导入java.util.*;
公共A1级{
私有HashMap数据=新HashMap();
public void main()引发IOException{
BufferedReader ob=新的BufferedReader(新的InputStreamReader(System.in));
int t=Integer.parseInt(ob.readLine());

对于(inti=0;i您可以在这里做一些更改,一些注释不应该使用原始类型。因此,将迭代器更改为-

Iterator<Entry<String, ArrayList<Integer>>> iter = data.entrySet().iterator();
此外,您还可以利用java8
Map.foreach
an
lambda expressions
来避免所有这一切,并使代码更出色、更美观

data.forEach((key,value) -> {
            int fund = Integer.parseInt(key);
            System.out.println(maxhouse(fund, value));
});
避免编写使代码更干净的代码

Iterator iter = data.entrySet().iterator();
while(iter.hasNext()){
 Map.Entry ele = (Map.Entry)iter.next();
 int fund=Integer.parseInt((String)ele.getKey());
 System.out.println(maxhouse(fund,(ArrayList<Integer>)ele.getValue()));
}
Iterator iter=data.entrySet().Iterator();
while(iter.hasNext()){
Map.Entry ele=(Map.Entry)iter.next();
int fund=Integer.parseInt((字符串)ele.getKey());
System.out.println(maxhouse(fund,(ArrayList)ele.getValue());
}

这是否回答了您的问题?您正在使用不带类型参数的
Iterator
Map.Entry
。切勿使用原始类型。您应该提供正确的类型参数。更改为
Iterator iter=data.entrySet().Iterator();
Iterator iter=data.entrySet().Iterator();
Map.Entry ele=(Map.Entry)iter.next();
Entry ele=iter.next();
以摆脱原始类型。是否使用-Xlint重新编译?谢谢,先生,现在错误消失了,我没有注意到。您可以使用
forEach
,但确实没有必要。增强的for循环更好(更简单、更广泛、可能更快、更强大)选择。
Iterator iter = data.entrySet().iterator();
while(iter.hasNext()){
 Map.Entry ele = (Map.Entry)iter.next();
 int fund=Integer.parseInt((String)ele.getKey());
 System.out.println(maxhouse(fund,(ArrayList<Integer>)ele.getValue()));
}