数字不是在同一行上,每行有1000行,每个数字都有一个数字。
这是我的代码,但是运行它时收到错误消息,它指向数组列表的int部分,并显示意外类型。
import java.util.ArrayList;
import java.io.*;
import java.util.Scanner;
public class Homework4
{
public static void main(String[] args) throws IOException
{
//Variables
int num;
int temp;
Scanner kb = new Scanner(new File("number.txt"));
ArrayList<int> list = new ArrayList<int>();
while (kb.hasNextLine())
{
list.add(kb.nextLine());
}
//Close File
inputFile.close();
}
}
答案 0 :(得分:1)
您必须使用包装器类Integer
。
将ArrayList<int>
更改为ArrayList<Integer>
类似地,
long-> Long
double-> Double
char-> Character
float-> Float
此外,当您从文件中读取数据时,使用kb.nextLine()
返回String类型。您可以通过以下方式使用Integer
将其转换为Integer.parseInt()
类型。
list.add( Integer.parstInt( kb.nextLine() ) );
下一部分是,关闭资源。
您尚未通过名称inputFile
声明变量。它必须改为kb
。
kb.close();
完整代码如下
public static void main(String[] args) throws IOException {
Scanner kb = new Scanner(new File("number.txt"));
ArrayList<Integer> list = new ArrayList<>();
while (kb.hasNextLine()) {
list.add(Integer.parseInt(kb.nextLine()));
}
kb.close();
}
希望这会有所帮助。
答案 1 :(得分:1)
由于您声称正在读取文本文件,因此可以使用类java.nio.file.Files
来读取它,然后使用Java的stream API将文本文件的每一行映射到Integer
并将所有这些Integer
收集到java.util.List
中,如以下代码所示:
Path path = Paths.get("path-to-your-file");
try {
List<Integer> integers = Files.lines(path) // throws java.io.IOException
.map(Integer::parseInt)
.collect(Collectors.toList());
System.out.println(integers);
}
catch (IOException x) {
x.printStackTrace();
}
答案 2 :(得分:0)
该代码中有几个错误。首先,对Integer
基本类型使用int
对象包装。接下来,您需要使用String
方法将读取的Integer.parseInt()
解析为整数类型。并关闭Scanner
实例而不是未定义的文件变量。
尝试以下代码:
import java.util.ArrayList;
import java.io.*;
import java.util.Scanner;
public class Homework4{
public static void main(String[] args) throws IOException
{
//Variables
int num;
int temp;
Scanner kb = new Scanner(new File("number.txt"));
ArrayList<Integer> list = new ArrayList<>();
while (kb.hasNextLine())
{
list.add(Integer.parseInt(kb.nextLine()));
}
//Close File
kb.close();
}
}