Программа, которую я создал в Eclipse, не выводится при запуске в качестве работающего JAR - PullRequest
0 голосов
/ 07 июня 2018

Мой код извлекается из трех текстовых файлов, чтобы определить дату / время наибольшего значения в списке (и отобразить предыдущие и последующие пять значений).К сожалению, после экспорта в Eclipse как работающего JAR-файла (я включаю все три текстовых файла в экспорт), он абсолютно не выводит.Я пробовал Google и Stack Overflow, но не могу найти источник ошибки.Как вы думаете, с большей вероятностью это будет связано с моим кодом или чем-то, что я делаю в Eclipse (например, при экспорте файла)? Вот как я экспортирую это в файл Runnable Jar

import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;

public class FindTheMaxGeiger {

    public static void main (String[] args) {

        String [] dateStamp = getDate("4_22_18_dates.txt");
        String [] timeStamp = getTime("4_22_18_times.txt");

            try {
            Scanner scanner1 = new Scanner(new File("4_22_18_radiation.txt"));

            int radCtr = 0; 
            while (scanner1.hasNextLine()) {
                radCtr++;
                scanner1.nextLine();
                }
            Scanner scanner2 = new Scanner(new File("4_22_18_radiation.txt"));
            int [] radiation = new int [radCtr]; //create the radiation array
            int i = 0;
            while(scanner2.hasNextLine()){
               radiation[i++] = scanner2.nextInt();
            }

            int max = getMax(radiation);
            System.out.println("Date        Counts per Minute");
            System.out.println("-------------------------------");
            System.out.println(dateStamp[max-5]+ " " + timeStamp[max-5] + "        " + radiation[max-5]);
            System.out.println(dateStamp[max-4]+ " " + timeStamp[max-4] + "        " + radiation[max-4]);
            System.out.println(dateStamp[max-3]+ " " + timeStamp[max-3] + "        " + radiation[max-3]);
            System.out.println(dateStamp[max-2]+ " " + timeStamp[max-2] + "        " + radiation[max-2]);
            System.out.println(dateStamp[max-1]+ " " + timeStamp[max-1] + "        " + radiation[max-1]);
            System.out.println(dateStamp[max]+ " " + timeStamp[max] + "        " + radiation[max] + "(This is the max)");
            System.out.println(dateStamp[max+1]+ " " + timeStamp[max+1] + "        " + radiation[max+1]);
            System.out.println(dateStamp[max+2]+ " " + timeStamp[max+2] + "        " + radiation[max+2]);
            System.out.println(dateStamp[max+3]+ " " + timeStamp[max+3] + "        " + radiation[max+3]);
            System.out.println(dateStamp[max+4]+ " " + timeStamp[max+4] + "        " + radiation[max+4]);
            System.out.println(dateStamp[max+5]+ " " + timeStamp[max+5] + "        " + radiation[max+5]);

            }

                catch (FileNotFoundException e){

                }



    }

        //here we call the method to find the max

        public static String[] getDate(String file) {
        //step 1:
        // count the number of lines in the file
        //step 2 - create the array and copy the elements in
        int ctr = 0;
        try {

            Scanner s3 = new Scanner(new File(file));
            while (s3.hasNextLine()) {
                ctr++;
                s3.nextLine();
            }
            String[] dateStamp = new String[ctr]; //creation

            Scanner s4 = new Scanner(new File(file));
            for (int i = 0; i < ctr; i++) {
                dateStamp[i] = s4.next();           
            }

            return dateStamp;
        }
        catch (FileNotFoundException e){

        }
        return null;
    }

    //get time
        public static String[] getTime(String file) {
            //step 1:
            // count the number of lines in the file
            //step 2 - create the array and copy the elements in
            int ctr = 0;
            try {

                Scanner s5 = new Scanner(new File(file));
                while (s5.hasNextLine()) {
                    ctr++;
                    s5.nextLine();

                }
                String[] timeStamp = new String[ctr]; //creation

                Scanner s6 = new Scanner(new File(file));
                for (int i = 0; i < ctr; i++) {
                    timeStamp[i] = s6.next();

                }

                return timeStamp;
            }
            catch (FileNotFoundException e){

            }
            return null;
}

        public static int getMax(int[] inputArray){ 
            int maxValue = inputArray[0]; 
            int maxLoc = 0;
            for(int i=1;i < inputArray.length;i++){ 
              if(inputArray[i] > maxValue){ 
                 maxValue = inputArray[i]; 
                 maxLoc = i;
              } 
            } 
            return maxLoc;}}    

1 Ответ

0 голосов
/ 07 июня 2018

как уже упоминалось, файлы теперь сжаты и находятся внутри фляги и не живут в файловой системе, используйте что-то вроде InputStream in = this.getClass().getClassLoader().getResourceAsStream("SomeTextFile.txt");

посмотрите здесь для того, как преобразовать inputStream встрока.или кажется, что вы можете использовать Scanner прямо в потоке.вам нужно знать кодировку char

...