读取要输入数组的txt文件

时间:2014-04-22 07:41:59

标签: java

这里用户输入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));
            }'

3 个答案:

答案 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 + 1length,这将导致您的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之间的数字。您应该使用不同的方法。