Не найдена строка для nextline/int

Я пытаюсь позволить пользователю вводить некоторые значения в строку и 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());

    }


}

вы читаете из пустого файла... почему? Вы должны читать из консоли для пользовательского ввода: new Scanner(System.in);

UninformedUser 30.05.2019 16:47

Сначала я создал этот пустой файл, а затем попытался позволить пользователю поместить некоторые значения, которые будут отправлены в файл.txt.

Lewiad 30.05.2019 16:50

Тем не менее, сканер должен считывать данные из консоли для пользовательского ввода, поэтому, как я уже сказал new Scanner(System.in);, а для записи в файл используйте new BufferedWriter(new FileWriter(fileName));, а затем вызывайте метод append() для каждой строки, которую вы хотите записать в файл. Очевидно, вы откуда-то копируете свой код, не понимая, что он делает. Постарайтесь избегать этого в будущем - удачи

UninformedUser 30.05.2019 16:51

Единственное, что я скопировал, это часть, где он создает файл txt, кроме того, что я сделал все самостоятельно.

Lewiad 30.05.2019 16:55

справедливо. Надеюсь, вы поняли мои предложения, что использовать для какой задачи, я думаю, вы уже решили проблему сейчас?

UninformedUser 30.05.2019 18:37

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

Lewiad 31.05.2019 22:26

если бы вы использовали мое решение, new FileWriter(f, true); - второй аргумент здесь - это режим «добавления» для открытого файла. Для вашего простого случая BufferedWriter было бы невозможно, т.е. создайте FilterWriter перед циклом while с помощью FileWriter writer = new FileWriter(f, true);, а затем вызовите writer.append(stringToWrite);writer.flush();, а также после завершения цикла writer.close() write.append(stringToWrite);`

UninformedUser 01.06.2019 12:00

Вы знаете код о (f, true), который я тоже узнал, но не знал, куда его поместить в коде, у меня всегда была ошибка, но благодаря вам он знает, работает спасибо.

Lewiad 01.06.2019 14:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Комментарий @AKSW решил мои два ответа. Использование Scanner in = new Scanner(System.in); позволило бы мне вводить пользовательский ввод с консоли. Другой заключался в том, чтобы остановить перезапись текста, который был его последним комментарий в этом сообщении.

Другие вопросы по теме