Java 未经检查或不安全的操作
无法确定是什么导致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
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])
。这也有助于定位警告。