Программа I / O-TxtFile Line Distance |ДЖАВА - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь написать лабораторию / программу, которая просматривает входной файл .txt.Читает всю строку данных как строку, а затем разбивает эту строку на массив, разделенный пробелом.Если в результирующем массиве есть 4 элемента, и каждый элемент является допустимым двойным, я хочу, чтобы он определил расстояние между точками и информацию о возврате в отдельный файл output.txt.

Проблема, которую я имеюне имея возможности получить x1, x2, y1, y2 для всех, проходящих через оператор if if(testDoubleLow()){ Если бы я записал это как if(testDoubleLow(item1,0)){, тогда он будет проверять только x1 или aka первый ввод в строке txt?

{МОЙ КОД}

import java.io.*;
import java.util.Scanner;

public class RLabs {
    public static void main(String[] args) throws FileNotFoundException {
        double dealtaX, deltaY, distance, x1, y1, x2, y2;
        String Line, item1, item2, item3, item4;
        String[] Sect;
        Scanner inFile;
        PrintWriter outFile;
        System.out.println("I/O File Line Distance Program Starting. Opening file...");
        System.out.println("Please ensure data is entered per line in the format of (X1 Y1 X2 Y2).");
        inFile = new Scanner(new File("input.txt"));
        outFile = new PrintWriter(new File("countresults.txt"));
        while (inFile.hasNext()) {
            Line = inFile.nextLine();
            Sect = Line.split(" ");
            if (Sect.length == 4) {
                item1 = Sect[0];
                item2 = Sect[1];
                item3 = Sect[2];
                item4 = Sect[3];
                outFile.printf(Line);
                if (testDoubleLow()) {
                    x1 = Double.parseDouble(item1);
                    y1 = Double.parseDouble(item2);
                    x2 = Double.parseDouble(item3);
                    y2 = Double.parseDouble(item4);
                    dealtaX = (x2 - x1);
                    deltaY = (y2 - y1);
                    distance = Math.sqrt(Math.pow(deltaY, 2) + Math.pow(dealtaX, 2));
                    outFile.printf(" The distance between (%1.1f,%1.1f) and (%1.1f,%1.1f) is %1.1f\n", 
                            x1, y1, x2, y2, distance);
                }
            } else {
                outFile.println("Line did not have 4 item(s)");
            }
        }
        outFile.close();
        inFile.close();
        System.out.println("Done...");
    }

    private static boolean testDoubleLow(String token, double l) {
        if (testDouble(token)) {
            double num = Double.parseDouble(token);
            if (num > l) {
                return true;
            }
        }
        return false;
    }

    private static boolean testDouble(String s) {
        try {
            Double.parseDouble(s);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}

1 Ответ

0 голосов
/ 03 декабря 2018
import java.io.*;
import java.util.Scanner;

public class RLabs {

    public static void main(String[] args) throws FileNotFoundException {
        double dealtaX, deltaY, distance,x1, y1, x2, y2;
        String Line, item1, item2, item3, item4;
        String[] Sect;
        Scanner inFile;
        PrintWriter outFile;

        System.out.println("I/O File Line Distance Program Starting. Opening file...");
        System.out.println("Please ensure data is entered per line in the format of (X1 Y1 X2 Y2).");
        inFile = new Scanner(new File("input.txt"));
        outFile = new PrintWriter(new File("countresults.txt"));


        while(inFile.hasNext()){

            Line = inFile.nextLine();
            Sect = Line.split(" ");
            if(Sect.length == 4) {
                item1 = Sect[0];
                item2 = Sect[1];
                item3 = Sect[2];
                item4 = Sect[3];

                if(testDoubleLow(item1,0)&&(testDoubleLow(item2,0)&&(testDoubleLow(item3,0)&&(testDoubleLow(item4,0))))){
                    x1 = Double.parseDouble(item1);
                    y1 = Double.parseDouble(item2);
                    x2 = Double.parseDouble(item3);
                    y2 = Double.parseDouble(item4);
                    dealtaX = (x2-x1);
                    deltaY = (y2-y1);

                    distance = Math.sqrt(Math.pow(deltaY,2)+ Math.pow(dealtaX,2));
                    outFile.printf(Line);

                    outFile.printf(" The distance between (%1.1f,%1.1f) and (%1.1f,%1.1f) is %1.1f\n", x1,y1,x2,y2,distance);

                }
                else {
                    outFile.println("Line did not correct data");
                }






            }
            else {
                outFile.println("Line did not have 4 item(s)");
            }
        }

        outFile.close();
        inFile.close();


        System.out.println("Done...");
    }

        private static boolean testDoubleLow(String token, double l){

            if(testDouble(token)) {
                double num = Double.parseDouble(token);
                if(num > l ) {
                    return true;
                }
            }

            return false;
        }

        private static boolean testDouble(String s) {
            try {
                Double.parseDouble(s);
                return true;
            }
            catch(Exception e) {
                return false;


    }

    }
}

Я не знаю, был ли это правильный ответ или, может быть, это был временный способ обойтись, но я надеюсь, что это может быть правильно?if(testDoubleLow(item1,0)&&(testDoubleLow(item2,0)&&(testDoubleLow(item3,0)&&(testDoubleLow(item4,0))))){

...