我不知道如何取整数并使用扫描程序忽略文件中的字符串。这就是我到目前为止所拥有的。我需要知道如何通过令牌读取文件令牌。是的,这是一个家庭作业问题。非常感谢。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ClientMergeAndSort{
public static void main(String[] args){
int length = 13;
try{
Scanner input = new Scanner(System.in);
System.out.print("Enter the file name with extention : ");
File file = new File(input.nextLine());
input = new Scanner(file);
while (!input.hasNextInt()) {
input.next();
}
int[] arraylist = new int[length];
for(int i =0; i < length; i++){
length++;
arraylist[i] = input.nextInt();
System.out.print(arraylist[i] + " ");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
答案 0 :(得分:2)
请查看您正在执行的操作的API。
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextInt()
具体来说,Scanner.hasNextInt()。
&#34;如果使用nextInt()方法将此扫描程序输入中的下一个标记解释为默认基数中的int值,则返回true。扫描仪不会超过任何输入。&#34;
所以,你的代码:
while (!input.hasNextInt()) {
input.next();
}
即将查看是否输入hasNextInt()。
因此,如果下一个标记 - 一个字符 - 是一个int,它就是假的,并跳过该循环。 如果下一个标记不是int,它将进入循环...并迭代到下一个字符。
要么: - 找到输入中的第一个数字,然后停止。 - 转到输入的末尾,找不到任何数字,并且当你试图继续前进时可能会遇到IllegalStateException。
答案 1 :(得分:1)
执行此操作的简单方法是以您喜欢的方式从文件中读取所有数据(例如,逐行),如果需要使用令牌,则可以使用split函数(String.split请参阅Java doc)或者你正在使用循环读取的每一行String的StringTokenizer,以便创建具有特定分隔符(例如空格)的标记,所以现在你有了标记,你可以用它们做你需要的东西,希望你能解决,如果你有疑问,你可以问。
有一个很好的编程。
答案 2 :(得分:1)
import static java.nio.file.Files.readAllBytes;
import static java.nio.file.Paths.get;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) throws IOException {
String newStr=new String(readAllBytes(get("data.txt")));
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(newStr);
while (m.find()) {
System.out.println("- "+m.group());
}
}
}
此代码填充读取文件,然后使用正则表达式,您只能获得整数值。
注意:此代码适用于Java 8
答案 3 :(得分:1)
我认为这将符合您的要求。
在最初从文件中读取数据之前,请尝试使用scanner和文件写入器将一些内容写入文件,然后尝试执行以下代码段。
File file = new File(your filepath);
List<Integer> list = new ArrayList<Integer>();
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String str =null;
while(true) {
str = bufferedReader.readLine();
if(str!=null) {
System.out.println(str);
char[] chars = str.toCharArray();
String finalInt = "";
for(int i=0;i<chars.length;i++) {
if(Character.isDigit(chars[i])) {
finalInt=finalInt+chars[i];
}
}
list.add(Integer.parseInt(finalInt));
System.out.println(list.size());
System.out.println(list);
} else {
break;
}
}
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
最终的println语句将逐行显示文件中的所有整数。
由于