Reading double values from a file

前端 未结 4 1144
夕颜
夕颜 2020-12-20 23:51

I\'m trying to read some numbers (double) from a file and store them in an ArrayList and an array (yes, I need both) with the code below:

try {
    Scanner s         


        
相关标签:
4条回答
  • 2020-12-21 00:19

    I had the same problem (not working scanner) and the solution seems to be surprisingly easy. You just need to set a locale for it.

      // use US locale to be able to identify doubles in the string
      scanner.useLocale(Locale.US);
    

    taken from here: http://www.tutorialspoint.com/java/util/scanner_nextdouble.htm

    0 讨论(0)
  • 2020-12-21 00:27

    I tried reducing the code down to only test the Scanner by itself. The following code works with your data file:

    public static void main(String[] args) {
        Scanner scan;
        File file = new File("resources\\scannertester\\data.txt");
        try {
            scan = new Scanner(file);
    
            while(scan.hasNextDouble())
            {
                System.out.println( scan.nextDouble() );
            }
    
        } catch (FileNotFoundException e1) {
                e1.printStackTrace();
        }
    
    }
    

    I got the following (expected) output:

    0.0
    0.0
    0.023
    0.023
    0.05
    0.05
    0.2
    0.2
    0.5
    0.5
    0.8
    0.8
    0.95
    0.95
    0.977
    0.977
    1.0
    1.0
    

    Try this to make sure you're referencing the correct file.

    0 讨论(0)
  • 2020-12-21 00:33

    Below is my rendition of your code, adapted to make it run. It immediately explodes with an array indexing exceptions.

    So: Can you give us a little more framework? What's different from what I did?

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Zenzen {
    
       private static ArrayList<Double> tmp = new ArrayList<Double>();
    
       private static File file = new File("Zenzen.dat");
    
       public static void main(String[] args) {
    
          Scanner scan;
          try {
             scan = new Scanner(file);
             Object[][] tmp2 = new Object[tmp.size() / 2][2];
             int tmp3 = 0;
    
             while (scan.hasNextDouble()) {
                tmp.add(scan.nextDouble());
                System.out.println(Arrays.deepToString(tmp.toArray())); // debug print
                for (int i = 0; i < tmp.size() / 2; i++) {
                   for (int j = 0; j < 2; j++) {
                      tmp2[i][j] = tmp.get(tmp3);
                      tmp3++;
                   }
                }
             }
    
          } catch (FileNotFoundException fnfe) {
             fnfe.printStackTrace();
          }
       }
    }
    

    [0.0]
    [0.0, 0.0]
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at Zenzen.main(Zenzen.java:26)
    
    0 讨论(0)
  • 2020-12-21 00:40

    Try setting the delimiter first:

    scan.useDelimiter("\\s+");
    

    JavaDoc

    0 讨论(0)
提交回复
热议问题