如何从文件java中取整数并删除其他数据类型?

时间:2015-04-10 03:05:07

标签: java

我不知道如何取整数并使用扫描程序忽略文件中的字符串。这就是我到目前为止所拥有的。我需要知道如何通过令牌读取文件令牌。是的,这是一个家庭作业问题。非常感谢。

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();
    }



}

}

4 个答案:

答案 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。

  • 用文字写下你想在这里做什么。
  • 使用API​​文档弄清楚如何告诉计算机。 :)一次得到一点;这有几个不同的部分,第一部分还没有工作。
  • 示例:只需让它读取文件,然后先显示每一行。这可以让你做调试;它可以让你一次构建一个东西,一旦你知道这个东西有效,你就可以再构建一个部分。
  • 首先阅读文件。然后在阅读时显示它,因此您知道它有效。
  • 然后担心它是否有数字。

答案 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语句将逐行显示文件中的所有整数。

由于