Сканирование и присвоение отрицательного значения из файла int - PullRequest
0 голосов
/ 25 марта 2020

Итак, у меня есть задание для моего класса написать программу, которая читает числовые данные c (int) из файла, выполняет вычисления с данными и затем печатает результаты в формате. Однако выполненные расчеты зависят от того, насколько жарко.

Сначала он будет считывать температуру по Фаренгейту, а затем вычислять температуру в градусах Цельсия.

Если температура составляет 50 градусов или менее, он считывает скорость ветра и рассчитывает охлаждение ветром. с учетом Фаренгейта и Цельсия, распечатывая их вместе со скоростью ветра в метрах в секунду.

Если температура составляет 80 или более, будет считываться относительная влажность, рассчитывается тепловой индекс для Фаренгейта и Цельсия , а затем распечатайте их.

Если температура будет между 50 и 80, то она просто распечатает температуры по Фаренгейту и Цельсию.

Моя проблема в том, что программа не чтение отрицательных чисел из файла.

Вот моя программа (Примечание: я заметил это, когда занимался программированием, поэтому существует пустая инструкция else-if и пустая инструкция else и переменные темпа были удалены из кода, пока я пытался отладить несколько ошибок вычисления, которые, вероятно, вызваны этой проблемой):

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

public class Program2{
    public static void main (String [] args) {

        //Creating file input, scanner, and exception catch

        FileInputStream inf = null;
        Scanner in = null;
        try {
            inf = new FileInputStream("weatherData.txt");
        }
        catch (FileNotFoundException e) {
            System.out.println("You've rolled a Nat 1! Critical Failure! The file you're looking for could not be found! To top it off, this program will"
                                    + " now close!");
            System.exit(1);
        }
        in = new Scanner(inf);

        //Creating variables

        String a;           //Testing string
        int tempF,          //Temperature Fahrenheit
            windSpeedMPH,   //Wind Speed in Miles per hour
            relHum;         //Relative Humidity
        double tempC,       //Temperature Celsius
               heatIndex,   //Heat Index
               windSpeedMPS,//Wind Speed in Meters per Second
               windChillF,  //Wind Chill factor in Fahrenheit
               windChillC,  //Wind Chill factor in Celsius
               tempo1,      //tempo1-13 are temporary variables to hold values
               tempo2,      //in order to simplify calculations
               tempo3,
               tempo4,
               tempo5,
               tempo6,
               tempo7,
               tempo8,
               tempo9,
               tempo10,
               tempo11,
               tempo12,
               tempo13;

        //Beginning calculation and output

        while(in.hasNext()) {
            //Testing while loop

            //a = in.nextLine();
            //System.out.println(a);

            //Assigning Fahrenheit Temperature

            tempF = in.nextInt();

            //Calculating tempC

            tempC = tempF - 32;
            tempC = tempC * 0.556;
            //System.out.println(tempC);

            //Selection structures for calculations and outputs

            if (tempF <= 50) {
                windSpeedMPH = in.nextInt();
                //System.out.println(windSpeedMPH);

                windChillF = (35.74 + (0.6215 * tempF) - (35.75 * (Math.pow(windSpeedMPH, 0.16))) + ((0.4275 * tempF) * Math.pow(windSpeedMPH, 0.16)));
                //System.out.println(windChillF);

                System.out.println();    //Gives whitespace to separate blocks of data and make the first block visible.
                System.out.printf("%-18s%-21s%10s\n", "Fahrenheit Temp", "Wind Speed (mph)", "Feels Like");
                System.out.printf("%15d%19d%15.1f\n", tempF, windSpeedMPH, windChillF);

                windSpeedMPS = windSpeedMPH / 2.237;

                windChillC = (35.74 + (0.6215 * tempC) - (35.75 * (Math.pow(windSpeedMPS, 0.16))) + ((0.4275 * tempC) * Math.pow(windSpeedMPS, 0.16)));
                //System.out.println(windChillC);

                System.out.printf("%15s%19s%15s\n","Celsius Temp", "Wind Speed (mps)", "Feels Like");
                System.out.printf("%15.1f%19.1f%15.1f\n", tempC, windSpeedMPS, windChillC);
            } 
            else if (tempF >= 80) {

            }
            else {

            }
        }
    }
}

Это мой входной файл, в первом столбце указывается температура по Фаренгейту, а во втором столбце указывается либо скорость ветра в милях в час, либо относительная влажность (Изменить: единственный способ узнать, число во втором столбце - это скорость ветра относительно относительной влажности, чтобы определить, будет ли температура 50 или ниже (скорость ветра) или 80 или выше (относительная влажность) .

52
-4   16
42   12
21   22
48   20
-27   18
68
62
33    0
11    2
76
0    9
12   20
79
31   31
4    8
103   98
31   17
-7   33
-16   17
36   60
-6   22
91   25
-22    5
93   88
97   12
-10   41
40   51
86   87
87   95
4   43
70
45   10
31   12
-11   33
55
104   81
-24    9
38   33
41   30
60
75
-21   11
30    2
38   23
101   88
55
21   59
83   16
15   45
-16   31
28   13
93   74
45   37
31   50
64
100   54
2    2
96   12
42   15
71
39   32
-23   15
29    9
-22   56
42    7
62
22   26
49   16
45   45
42   39
46   59
105   14
-11   28
-20   31
102   66
51
-29   14
40   46
48   26
-9   52
...