从文件中提取一些整数值我遇到了一个很大的问题:
[41; 48; 36; 128; 1; ........... 105]
我试图用这段代码来做:
Scanner scanner = new Scanner(new File("ala1.txt"));
int [] tall = new int [800];
int i = 0;
while(scanner.hasNext())
{
if (scanner.hasNextInt()){
tall[i++] = scanner.nextInt();
}
但它不起作用。谁能帮我 ??
答案 0 :(得分:1)
问题是,扫描程序将[
,:
等字符视为正确的文本,因此无法将[41;
或48;
等标记解析为整数。要解决此问题,您可以将Scanner设置为将每个非数字字符视为分隔符。
由于Scanner使用正则表达式语法,您可以使用\D+
之类的分隔符来表示
+
一个或多个\D
非数字字符所以你的代码看起来像
Scanner scanner = new Scanner(new File("ala1.txt"));
scanner.useDelimiter("\\D+");
while(scanner.hasNextInt()){
System.out.println(scanner.nextInt());
}
答案 1 :(得分:0)
从行中提取所有整数:
Scanner scanner = new Scanner(new File("ala1.txt"));
String line = scanner.nextLine();
List<Integer> ints = new ArrayList<>();
Matcher m = Pattern.compile("\\d+").matcher(line);
while(m.find()) {
ints.add(Integer.parseInt(m.group()));
}
答案 2 :(得分:0)
import java.io.BufferedReader;
import Java.io.FileReader;
public class ReadLine
{
BufferedReader br = new BufferedReader(new FileReader("youtFile.txt"));
try
{
String line;
while((line= br.readLine())!=null)
{
System.out.pringln(line)
int vl=Integer.parseInt(line);
}
}
catch(Esception exo)
{
}
finally
{
br.close();
}
}
如果一行中有多个值,则可以使用拆分方法。而不是解析为整数。
import java.io.BufferedReader; import Java.io.FileReader;
public class ReadLine
{
BufferedReader br = new BufferedReader(new FileReader("youtFile.txt"));
try
{
String line;
while((line= br.readLine())!=null)
{
System.out.pringln(line)
for(int i=0i<line.split(",").length)
{
int vl=Integer.parseInt(line.split(",")[i]);
}
}
}
catch(Esception exo)
{
}
finally
{
br.close();
}
}