Java 未经检查或不安全的操作

Java 未经检查或不安全的操作,java,Java,无法确定是什么导致java编译器抛出 uses unchecked or unsafe operations. 正在执行此操作的类如下所示: import java.io.File; import java.io.FileInputStream; import java.util.Scanner; import java.util.Vector; public class Proj2 { /** * args[0] the maximum depth of the trie * a

无法确定是什么导致java编译器抛出

uses unchecked or unsafe operations.
正在执行此操作的类如下所示:

import java.io.File;
import java.io.FileInputStream;
import java.util.Scanner;
import java.util.Vector;



public class Proj2 {

/**
 * args[0] the maximum depth of the trie
 * args[1] is the number of substrings to print
 * args[2] name of first file containing text
 * args[3] name of second file containing text
 * @param args
 */
public static void main(String[] args) throws Exception {
    String input = args[0];
    int one = 0;
    int two = 0;
    String a;
    String b;
    String[] tokens = input.split("\\s+");
    if (tokens.length != 4) {
        throw new IllegalArgumentException(
                "Argument must contain two integers and two filenames.");
    }
    try {
        one = Integer.parseInt(tokens[0]);
        two = Integer.parseInt(tokens[1]);
    } catch (Exception e) {
        System.out.println("First two arguments must be integers");
    }
    System.out.println("" + one + " " + two + " " + tokens[2] + " "
            + tokens[3]);
    try {

        Scanner sc1 = new Scanner(new File(tokens[2]));
        ;

        Scanner sc2 = new Scanner(new File(tokens[3]));
        String s = "";
        while (sc1.hasNext())
            s += sc1.nextLine();

        Character[] in1 = new Character[s.length()];
        for (int i = 0; i < s.length(); i++) {
            in1[i] = s.charAt(i);
        }
        s = "";
        while (sc2.hasNext())
            s += sc2.nextLine();
        Character[] in2 = new Character[s.length()];
        for (int i = 0; i < s.length(); i++) {
            in2[i] = s.charAt(i);
        }
        Trie<Character> tree1 = new Trie<Character>(in1,
                Integer.parseInt(tokens[0]));
        Trie<Character> tree2 = new Trie<Character>(in2,
                Integer.parseInt(tokens[0]));
        Vector<Vector<Character>> max = tree1.getMax(Integer
                .parseInt(tokens[1]));
        Vector<Integer> max_n = tree1.getMaxCount(Integer
                .parseInt(tokens[1]));

        System.out.println("Sequence    # in " + tokens[2] + "\t# in "
                + tokens[3]
                + "\n--------    --------------\t--------------");

        for (int i = 0; i < max.size(); i++) {
            int n = 0;
            if (tree2.consist(max.get(i)))
                n = tree2.getCount(max.get(i));
            s = "";
            for (int j = 0; j < max.get(i).size(); j++)
                s += max.get(i).get(j);
            System.out.println(s + "\t    " + max_n.get(i) + "\t\t\t" + n);
        }
    } catch (Exception e) {
        System.out.println("Incorrect file name");
    }

}

}
导入java.io.File;
导入java.io.FileInputStream;
导入java.util.Scanner;
导入java.util.Vector;
公共类项目J2{
/**
*args[0]trie的最大深度
*args[1]是要打印的子字符串数
*args[2]包含文本的第一个文件的名称
*args[3]包含文本的第二个文件的名称
*@param args
*/
公共静态void main(字符串[]args)引发异常{
字符串输入=args[0];
int-one=0;
int 2=0;
字符串a;
b串;
String[]tokens=input.split(\\s+);
if(tokens.length!=4){
抛出新的IllegalArgumentException(
“参数必须包含两个整数和两个文件名。”);
}
试一试{
一=整数.parseInt(标记[0]);
two=Integer.parseInt(标记[1]);
}捕获(例外e){
System.out.println(“前两个参数必须是整数”);
}
System.out.println(“+1+”“+2+”“+tokens[2]+”)
+代币[3]);
试一试{
Scanner sc1=新扫描器(新文件(令牌[2]);
;
Scanner sc2=新扫描仪(新文件(令牌[3]);
字符串s=“”;
while(sc1.hasNext())
s+=sc1.nextLine();
字符[]in1=新字符[s.length()];
对于(int i=0;i

我不得不修改该类以捕获更多异常,以前我使用args[1]、args[2]等来代替解析标记时,它没有抛出该类。但是由于我指定这些是整数,我很困惑为什么编译器仍然抛出错误。如有任何见解,将不胜感激。非常感谢。导致错误的代码正在实例化树。

是否使用
BlueJ
作为IDE?在哪一行显示警告?'Trie tree1=new Trie(in1,Integer.parseInt(令牌[0]);Trie tree2=新的Trie(in2,Integer.parseInt(标记[0]);'是什么发出警告
getMax
getMaxCount
的签名是什么
args[1]
是一个
String
Integer.parseInt(令牌[1])
是一个
int
。您可以缓存
Integer.parseInt(令牌[0])
…[1])
。这也有助于定位警告。