У меня возникли проблемы с определенной частью моей программы в конце этого (моего первого) семестра. Поэтому я должен взять текстовый файл, который включает имена и некоторые номера, и выполнить некоторые вычисления с номерами для каждого человека. Я попытался создать 2-мерный массив с циклами и преобразовать числа (которые сохраняются как строки) в двойные. Проблема состоит в том, что я не могу использовать значения для j = 3
и j = 4
для расчетов, так как это другая половина задания.Создание двухмерного массива из текстового файла
Так что мне нужно сохранить значения j = 0
и 1 как строки, а значения j = 2, 3 и 4 как можно удвоить - возможно, в том же массиве, если это возможно.
Мой профессор (который не учит, что им следует помнить) сказал что-то об использовании нескольких методов. Если вы посмотрите на следующие строки:
double empPay = empHoursResult * empRateResult;
System.out.println(arr[3] * arr[4]);
Ни одна из этих работ, потому что либо необходимо инициализировать двойников (которые делают их = 0) и значения для arr[j]
хранятся в виде строк.
Как хранить значения j > 1
только в двух экземплярах, а j = 0, 1 как строки? Любые советы приветствуются. Благодарю.
public static void main(String[] args) {
String[] textLine = new String[10];
int i = 0;
String empNumber;
String empHours;
String empRate;
double empNumberResult;
double empHoursResult;
double empRateResult;
System.out.println("Reading File ......");
String fileName = "datatext.txt";
try {
//Create object of FileReader
FileReader inputFile = new FileReader(fileName);
//Instantiate the BufferedReader Class
BufferedReader bufferReader = new BufferedReader(inputFile);
String line;
while ((line = bufferReader.readLine()) != null) {
textLine[i] = line;
i++;
}
for (int x = 0; x < i; x++) { //For loop of the rows, each employee.
String empInfo = textLine[x];
String[] arr = empInfo.split(" ");
System.out.println("\nEmployee: " + (x + 1));
for (int j = 0; j < arr.length; j++) {
if (j == 0) {
System.out.println("Last Name: " + arr[j]);
} else if (j == 1) {
System.out.println("First Name: " + arr[j]);
} else if (j == 2) {
empNumber = arr[j];
empNumberResult = Double.parseDouble(empNumber);
System.out.println("Employee Number: " + empNumberResult);
} else if (j == 3) {
empHours = arr[j];
empHoursResult = Double.parseDouble(empHours);
System.out.println("Total Hours Worked: " + empHoursResult);
} else if (j == 4) {
empRate = arr[j];
empRateResult = Double.parseDouble(empRate);
System.out.println("Employee Hourly Rate: " + empRateResult); // Read above line ^^.
}
}
double empPay = empHoursResult * empRateResult;
System.out.println(arr[3] * arr[4]);
/*
* Here is where I want the system to print out calculations from below.
* The calculatePay method must be somewhere in the first 'for loop' because I need it
* to calculate pay for all employess, x.
*/
}
bufferReader.close();
} catch (Exception e) {
System.out.println("Error while reading file line by line:" + e.getMessage());
}
}
public static void calculatePay(double empHoursResult, double empRateResult) {
double empNormalPay;
double empOvertimePay;
double empOvertimeHours;
double empTotalPay;
if (empHoursResult > 40) {
empNormalPay = 40 * empRateResult;
empOvertimeHours = 40 - empHoursResult;
empOvertimePay = empOvertimeHours * 1.5;
empTotalPay = empNormalPay = empOvertimePay;
}
}
Вы уверены, что хотите сохранить строки и парные разряды в одном массиве? Возможно, вы должны создать объект для каждого сотрудника и сохранить эти объекты в массиве. Btw. ваш внутренний цикл не нужен. Просто выполните 'empNumber = arr [2];' и т. Д. – SpiderPig