这里用户输入1和0的列表....所以输入将是10001010.但是我希望它从文本文件中读取...我的文本文件input.txt还包含10001010 ...需要coverDataArray数组从控制台输入与文件相同的字符串。
我尝试了Datainput流,但它抛出了异常
'
Scanner in = new Scanner (System.in);
String data1="";
...
.....
try{
System.out.println("Enter the binary bits");
data1 = in.next();
for ( int i = 0; i < data1.length(); i++)
{
covertDataArray[i] = Byte.parseByte(data1.substring( i, i+1));
}'
答案 0 :(得分:0)
您可以将File
对象而不是System.in
传递给Scanner构造函数。尝试如下所示:
String fileName = "input.txt";
File file = new File(fileName);
Scanner scanner = new Scanner(file);
String s = "";
while(scanner.hasNextLine()){
s = scanner.nextLine();
// your code. You can also use scanner.next() to read word by word instead of nextLine()
}
答案 1 :(得分:0)
Byte.parseByte(data1.substring( i, i+1));
您的例外情况是由于您前往length - 1
,然后是length - 1 + 1
,length
,这将导致您的ArrayOutOfBoundsException
。这可以在这一行上看到:
covertDataArray[i] = Byte.parseByte(data1.substring( i, i+1));
有一次,i
等于length-1
,或String
中的最后一个索引。然后,您尝试访问下一个不存在的元素。
至于您的文件,您可以将File
对象传递到Scanner
。
示例
要么..
File file = new File("yourfile.txt");
Scanner s = new Scanner(file);
答案 2 :(得分:0)
您正在尝试使用Byte.parseByte作为解析binairy输入的方法,这并不是真的有效,因为parseByte将尝试获取数字输入并将其解析为-128到127之间的数字。您应该使用不同的方法。