Member 14789377 Ответов: 2

Издания создать файл, но пустой


<pre>private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    String input = itemTxt.getText();
    itemTxt.setText("");
    int amount = Integer.parseInt(input);
    String input1 = itemTxt1.getText();
    itemTxt1.setText("");
    double price = Double.parseDouble(input1);
    try{
        if (amount>10){
            System.out.println("Not exceed 10!");
        }

        for(int i=0; i<VM1.data.size(); i++){
            Product p =(Product)VM1.data.get(i);
            if(bg.getSelection().getActionCommand()==p.item){
            int quantity = p.itemAmount;
            jLabel2.setText("Quantity: " + quantity);
            p.price=price;
            p.itemAmount+= amount;
            VM1.data.add(new Product(p.item,p.itemAmount,p.price));
            }
        }
    }catch(NumberFormatException e){
        System.out.println("You should enter number only!");
    }
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    try{
        PrintWriter p = new PrintWriter("product.txt");
        for(int i=0; i<VM1.data.size(); i++){
            Product t = (Product)VM1.data.get(i);
            p.println(t.item);
            p.println(t.itemAmount);
            p.println(t.price);
            p.println();
        }
        p.flush();
        p.close();
    }catch (Exception ex) {
        System.out.println("File does not exist");
    }

}

Что я уже пробовал:

Я думаю о том, чтобы создать файл, который будет обновлять/создавать данные(товар, Цена, Сумма) после нажатия на Jbutton2, где jbutton1 должен хранить их в списке массивов (VM1.dat.add). Теперь дело в том, что он создал файл, но это пустой файл.

После удаления try/catch at PrintWriter p = new PrintWriter("product.txt"), появляется сообщение об ошибке "unreported exception FileNotFoundException; должно быть перехвачено или объявлено выброшенным" .

2 Ответов

Рейтинг:
2

OriginalGriff

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


Member 14789377

Извините но не исправляйте вопрос

OriginalGriff

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

Member 14789377

хорошо тогда Спасибо за комментарий

OriginalGriff

Ах, нет, я понимаю, что ты пытаешься сказать.
"Извините, но не исправляйте вопрос" не означает того, что вы думаете: это "приказ, говорящий мне, что я не должен изменять ваш вопрос, чтобы показать улучшения"
Я думаю, что вы имели в виду: "я попробовал это, и это не решило мою проблему", что является совсем другим сообщением.

Что именно вы пытались сделать? Покажите код и расскажите нам, что произошло - опять же, точно - когда вы его запустили. Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы, - поэтому ввод как можно меньше никому не поможет!

Member 14789377

Извините за мой вводящий в заблуждение ответ, я приношу вам свои извинения

OriginalGriff

Это не проблема!
Что именно вы пытались сделать? Покажите код и расскажите нам, что произошло - опять же, точно - когда вы его запустили. Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы, - поэтому ввод как можно меньше никому не поможет!

Member 14789377

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

OriginalGriff

Ваш блок улова все еще пуст!

}поймать (исключение бывший) {}

Это означает, что если произойдет что-то глупое, чтобы помешать ему написать файл, вы выбросите всю информацию, которая может быть использована.:
1) говорит вам, что произошло что-то глупое, и файл не был написан правильно
И
2) говорит вам, что это была за глупость!

Добавьте код в блок catch, чтобы либо отобразить данные об ошибке, либо записать их в какой-нибудь файл. Без него вы не можете понять, почему он потерпел неудачу, потому что вы даже не знаете, что он потерпел неудачу, пока не взглянете на файл позже ...

Member 14789377

Добавлено, что когда я запускаю его, он возвращает мне любое сообщение.

OriginalGriff

Нет, не будет. - потому что ваш блок catch пуст"

Member 14789377

Я добавил, что код, который вы видите только что, - это тот, который я забыл обновить, мне очень жаль

Member 14789377

Мне так жаль, что я продолжаю делать глупости

Рейтинг:
0

Patrice T

Цитата:
То, что им думать про это ...

При отладке программ "мышление" - это неправильное поведение.
Как уже сказал ОГ, блок try/catch-это магическое оружие, которое скрывает проблемы, но не решает их.
Пустой блок catch делает проблему невидимой, он не решает проблему.

Первое действие, удалите try/catch и посмотрите, если вы получите ошибку и какую из них, ее положение.
Тогда вы, вероятно, захотите запустить отладчик, чтобы увидеть содержимое переменных при ошибке.
-----
Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.

[Обновление]
Цитата:
printwriter показывает ошибку и просит меня добавить try/catch для исключения файла не найден.

Теперь снова удалите try/catch и улучшите свой вопрос с помощью точного сообщения, которое вы получаете, включая строку ошибки.


Member 14789377

Спасибо за ваш комментарий.
Первое, что нужно сделать, чтобы удалить try/catch, когда я удаляю printwriter показывает ошибку и просит меня добавить try/catch для исключения файла не найден.
И следующая вещь отладчик, я действительно свежее, поэтому ничего не знаю об этом, спасибо за ваш обмен.
И в-третьих, то есть вы имеете в виду, что то, что я закодировал, на самом деле не функционирует так, как я имею в виду?

Patrice T

Отладчик изучается на практике.
Третье: это обычная ситуация.

Member 14789377

Издания п = новый printwriter("product.txt");
ниже показана ошибка
"несообщаемого исключение исключение filenotfoundexception; должны быть пойманы или как объявляют, были брошены"

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Member 14789377

ладно