Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_File Io_Java.util.scanner - Fatal编程技术网

Java 为什么可以';我不能从文件中读取字符串吗?

Java 为什么可以';我不能从文件中读取字符串吗?,java,string,file-io,java.util.scanner,Java,String,File Io,Java.util.scanner,代码应该从文件中读取字符串数组,然后将其打印出来。我不确定代码出了什么问题 import java.io.File; import java.io.IOException; import java.util.Scanner; public class program2 { public static void main(String[] args) throws IOException { //PriorityQueue<String> q = new P

代码应该从文件中读取字符串数组,然后将其打印出来。我不确定代码出了什么问题

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class program2 {

    public static void main(String[] args) throws IOException {
        //PriorityQueue<String> q = new PriorityQueue<String>();
        //file that contains strings
        File file = new File("infix.txt");
        Scanner scnf = new Scanner(file);
        // array count
        int arycnt = 0; 
        // gets the count of the array in the file
        while(scnf.hasNextLine()){
            arycnt++;
            scnf.next();
        }
        // creates array
        String[] letter = new String[arycnt];
        //reads in array from  file
        Scanner scnf2 = new Scanner(file);
        for(int i = 0; i<arycnt ;i++){
            letter[i] = scnf2.next();
        }
        // suppose to print all of the array
        for (int i = 0;i < letter.length;i++){
            System.out.println(letter[i]);
        }

    }

}
导入java.io.File;
导入java.io.IOException;
导入java.util.Scanner;
公共课程2{
公共静态void main(字符串[]args)引发IOException{
//PriorityQueue q=新的PriorityQueue();
//包含字符串的文件
File File=新文件(“infix.txt”);
扫描仪scnf=新扫描仪(文件);
//数组计数
int-arycnt=0;
//获取文件中数组的计数
while(scnf.hasNextLine()){
arycnt++;
scnf.next();
}
//创建数组
字符串[]字母=新字符串[arycnt];
//从文件中读取数组
扫描仪scnf2=新扫描仪(文件);

对于(int i=0;i您混淆了
nextLine
next
。将您的
hasNextLine()
替换为
hasNextLine()
,您应该会没事。

或将
next()
替换为
nextLine()
,这取决于文件中的“字符串”是各自在自己的行上,还是“标记”由空格分隔。您从未关闭两个
扫描仪
对象,因此您正在泄漏资源。我还建议使用
数组列表
而不是
字符串[]
,这样您就不必读取文件两次。