Чтение целых чисел из текстового файла и сохранение в отдельных переменных? (Сканер) - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть вопрос из двух частей. Поэтому я пишу код для назначения, которое пытается прочитать целые числа из текстового файла в качестве координат. Например, у меня есть текстовый файл с названием test1, который читает что-то вроде: 50 00 510 53 310 0. Теперь эти целые числа должны представлять координаты, означающие, что 50 фактически переводит в (5,0), (0,0), (5,10) и т. Д.

Я пытаюсь использовать сканер для ввода go в этот текстовый файл, выбрать первое число в этом двойном целом числе * git и сохранить его как " x "значение, а затем выберите второе число и сохраните его как значение" y ", а затем повторите промывку для остатка.

 int nSheep = 0;
 while (sc.hasNextLine()) {
     nSheep++;
     sc.nextLine();
 }

Это мой текущий код для определения количества овец в текстовом файле. По сути, он просто читает количество строк, считает их и сохраняет в переменной nSheep. Таким образом, в моем примере файла test1 он вернул бы число 6.

for (int i = 0; i < nSheep; i++) {
    while (sc.hasNextLine()) {
        int x = sc.nextInt();
        int y = sc.nextInt();
    }
    System.out.println(x);
} 

Это моя попытка чтения целых чисел и сохранения их в переменных x и y. Я не могу сказать, близко ли это к работе, так как println ничего не печатает.

Наконец-то ...

xMin = xMax = sc.nextInt();
yMin = yMax = sc.nextInt();

//read the remaining coordinates
for (int i = 1; i <= nSheep - 1; i++) {
     while (sc.hasNextInt) {
        int x = sc.nextInt();
        int y = sc.nextInt();

        if (x < xMin)
            xMin = x;
        if (x > xMax)
            xMax = x;
        if (y < yMin)
            yMin = y;
        if (y > yMax)
            yMax = y;

        if (x < xMin)
           xMin = x;
        if (x > xMax)
           xMax = x;
        if (y < yMin)
           yMin = y;
        if (y > yMax)
           yMax = y;
    }
}
System.out.print("Fence Coordinates: {(" + xMin + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMax + "), ");
System.out.println("(" + xMin + "," + yMax + ") ");

Это был успешный код, который работает, если я попросил пользователя ввести количество овец и определить их координаты. Единственное отличие от этого в том, что я не хочу, чтобы пользователь вводил данные, я просто хочу, чтобы сканер считывал текстовый файл, определял координаты, а затем распечатывал их. Если этот многословный вопрос имеет смысл, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 10 февраля 2020

создание экземпляра файла для ссылки на текстовый файл в Java

File text = new File("C:/temp/test1.txt");

Создание экземпляра сканера для чтения файла в Java

Scanner sc = new Scanner(text);

, поэтому

File text = new File("C:/temp/test1.txt");
Scanner sc = new Scanner(text);

int xMin, xMax;
xMin = xMax = sc.nextInt();

int yMin, yMax
yMin = yMax = sc.nextInt();

while (sc.hasNextLine()) {
    int x = sc.nextInt();
    int y = sc.nextInt();

    if (x < xMin) { xMin = x; }
    if (y < yMin) { yMin = y; }
    if (x > xMax) { xMax = x; }
    if (y > yMax) { yMax = y; }
}

System.out.println("Fence Coordinates:"
System.out.print("{ (" + xMin + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMax + "), ");
System.out.print("(" + xMin + "," + yMax + ") } ");
...