Я пытаюсь позволить пользователю вводить некоторые значения в строку и int в цикле while, однако, когда я начинаю, я не нахожу строку. Я изо всех сил пытался решить ее самостоятельно, но у меня ничего не получилось. Интересно, как я позволяю пользователю вводить значения для int и string.
public static void main(String[] args) throws IOException {
// TODO code application logic here
int saldo = 10000;
String anw = "j";
int cost;
//create file
File f = new File("C:\\Users\\ae65255\\Desktop\\file.txt");
try{
f.createNewFile();
System.out.println("23");
//frågan
while(anw.equals("j")){
Scanner fileIn = new Scanner(f);
System.out.println("Ange utgiftspost:"); //post
String post = fileIn.nextLine();
System.out.println("Ange kostnad:"); //kost
cost=fileIn.nextInt();
fileIn.nextLine();
saldo = +saldo -cost;
System.out.println("saldo:" +saldo);
System.out.println("Vill du mata in fler uppgifter? (j/n) :");
anw = fileIn.nextLine();
String fileContent = "---"+post+"---"+cost+"---"+saldo;
PrintWriter writer ;
writer = new PrintWriter(f);
writer.println(fileContent);
if (anw.equals("n")) {
fileIn.close();
writer.close();
//System.out.println("---"+post+"---"+cost+"---"+saldo);
}
} //frågan slut
}
catch(Exception e){
System.err.println(e.getMessage());
}//frågan
//System.out.println("---"+post+"---"+cost+"---"+saldo);
System.out.println("File path" +f.getPath());
}
}
Сначала я создал этот пустой файл, а затем попытался позволить пользователю поместить некоторые значения, которые будут отправлены в файл.txt.
Тем не менее, сканер должен считывать данные из консоли для пользовательского ввода, поэтому, как я уже сказал new Scanner(System.in);
, а для записи в файл используйте new BufferedWriter(new FileWriter(fileName));
, а затем вызывайте метод append()
для каждой строки, которую вы хотите записать в файл. Очевидно, вы откуда-то копируете свой код, не понимая, что он делает. Постарайтесь избегать этого в будущем - удачи
Единственное, что я скопировал, это часть, где он создает файл txt, кроме того, что я сделал все самостоятельно.
справедливо. Надеюсь, вы поняли мои предложения, что использовать для какой задачи, я думаю, вы уже решили проблему сейчас?
@ASKW Я нашел способ, но, к сожалению, не последовал твоему совету. Я искал информацию о буферизованном писателе и добавлении, но в документах онлайн, но совершенно не понял этого. Единственная проблема, которая у меня сейчас есть в моей программе, заключается в том, что она перезаписывает текстовый файл.
если бы вы использовали мое решение, new FileWriter(f, true);
- второй аргумент здесь - это режим «добавления» для открытого файла. Для вашего простого случая BufferedWriter
было бы невозможно, т.е. создайте FilterWriter
перед циклом while
с помощью FileWriter writer = new FileWriter(f, true);
, а затем вызовите writer.append(stringToWrite);writer.flush();
, а также после завершения цикла writer.close()
write.append(stringToWrite);`
Вы знаете код о (f, true), который я тоже узнал, но не знал, куда его поместить в коде, у меня всегда была ошибка, но благодаря вам он знает, работает спасибо.
Комментарий @AKSW решил мои два ответа. Использование Scanner in = new Scanner(System.in);
позволило бы мне вводить пользовательский ввод с консоли. Другой заключался в том, чтобы остановить перезапись текста, который был его последним комментарий в этом сообщении.
вы читаете из пустого файла... почему? Вы должны читать из консоли для пользовательского ввода:
new Scanner(System.in);