Я делаю простую учебную программу, в которой пользователь вводит некоторые данные, затем эти данные записываются в текстовый файл, затем считывается текстовый файл и отображаются данные. Однако не все данные записываются в текстовый файл. Пожалуйста, просмотрите следующее:BufferedWriter не пишет ВСЕ информацию
Это мой код:
package chasi.fecalMatter.ExcrementalProgram;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class RedundantExcrement {
static String inputName = JOptionPane.showInputDialog("Please input your FULL name:");
static String inputUsername = JOptionPane.showInputDialog("Please input your desired Username:");
static String inputJobTitle = JOptionPane.showInputDialog("Please input your Job title:");
static String inputSalary = JOptionPane.showInputDialog("Please input your monthly salary:");
static int convertedSalary = 0; /*Convert salary from String to int*/
static int benefitDeduction = 0;
static String empFileName = inputUsername+"INFO";
static BufferedWriter bwriter = null;
public static void main (String[] args) throws IOException {
//Catch NumberFormatException.
try {
Integer.parseInt(inputSalary);
} catch (NumberFormatException nfEx) {
JOptionPane.showMessageDialog(null, "Please ensure that " +
"your salary is entered in NUMERIC form.", "ERROR!", 2);
return;
}
//Specify instructions as regard salary -to- Benefit deduction ratio
if (convertedSalary >= 3500) {
benefitDeduction = 300;
} else {
benefitDeduction = 180;
}
try { /*Catches IOException AND NullPointerException*/
FileWriter fwriter = new FileWriter(empFileName);
bwriter = new BufferedWriter(fwriter);
bwriter.write(inputName);
bwriter.newLine();
bwriter.write(inputJobTitle);
bwriter.newLine();
bwriter.write(inputSalary);
bwriter.newLine();
bwriter.write(benefitDeduction);
bwriter.newLine();
bwriter.write("----------");
bwriter.newLine();
} catch (IOException | NullPointerException ionpEx) {
JOptionPane.showMessageDialog(null, "An ERROR has occured", "ERROR!", 2);
return;
} finally { /*CLOSE the writer*/
try{
if (bwriter != null) {
bwriter.close();
}
} catch (IOException ioEx2) {
JOptionPane.showMessageDialog(null, "ERROR!");
return;
}
}
}
}
Как вы можете видеть, я использую ИНТ convertedSalary
для преобразования пользователя, введенный inputSalary
из строки в число. В моем методе я использую
try {
Integer.parseInt(inputSalary);
} catch (NumberFormatException nfEx) {
JOptionPane.showMessageDialog(null, "Please ensure that " +
"your salary is entered in NUMERIC form.", "ERROR!", 2);
return;
}
Для того, чтобы скрыть его. Позднее (предполагается) будет написан BufferedWriter.
У меня есть этот код:
try {
Integer.parseInt(inputSalary);
} catch (NumberFormatException nfEx) {
JOptionPane.showMessageDialog(null, "Please ensure that " +
"your salary is entered in NUMERIC form.", "ERROR!", 2);
return;
}
Для того, чтобы изменить значение моего benefitDeduction
в зависимости от величины заработной платы пользователя.
ОДНАКО, то benefitDeduction
записывается в текстовый файл, но вместо этого, я получаю это:
Спасибо если вы можете помочь!
'У меня также есть этот код' это скопируйте & вставьте ошибку? Он содержит тот же код, что и выше. – Tom
Какой jdk вы используете? В стандартном java нет метода 'BufferedWriter.write (String)'. Действительно ли ваш код компилируется? – Dima
Btw: кажется, что 'convertSalary' всегда будет' 0', потому что вы не назначаете возвращаемое значение 'Integer.parseInt (inputSalary);' ему. И нет переменной 'userSalary', но' inputSalary', похоже, записывается в файл, потому что в нем содержится '2500' в качестве третьей строки (это' bwriter.write (inputSalary); '). – Tom