Шығарылымды алып тастағанда, бағдарламаның сынақ нәтижелерін қалай сақтау керек?

Бағдарламада логикаға қандай да бір кіріс енгізуім керек. Менің бағдарламамның логикасы негізінен мынаған ұқсайды:

- Ask user to select input file;
-- If exception --> error message, exit program;
-- Otherwise --> continue program, perform tests;
- After tests have been completed, ask user to select output file;
-- If exception --> error message, exit program;
-- Otherwise --> save results to file, exit program;

Мәселе мынада, егер пайдаланушы жарамсыз шығу файлын анықтаса, барлық сынақ нәтижелері жоғалып, бағдарлама тоқтайды. Жарамсыз шығу файлын таңдайтын болса, пайдаланушыға шығу файлын таңдауға екінші рет әрекет жасағым келеді.

Менің шығу коды келесідей:

public void printToFile() {

    JFileChooser outputFile;
    File outFileName;

    outputFile = new JFileChooser();

    outputFile.showSaveDialog(null);
    outFileName = outputFile.getSelectedFile();
    try {
        PrintStream outFile = new PrintStream(outFileName);
       //print results to file
    } catch (Exception e) {
        System.out.print("Can't be saved to this file! \n");
        System.exit(0);//exit program
    }
}

Мен ойлайтын жалғыз шешім - catch блогын келесі кодпен ауыстыру:

catch (Exception e) {
    System.out.print("Can't be saved to this file! \n");
    printToFile();
}

Алайда, егер пайдаланушы дұрыс емес екенін түсінбесе, ол сол файлды қайта-қайта таңдап, шексіз циклды жасайды. Осы әдіске балама бар ма, әлде циклды болдырмау тәсілі бар ма? Немесе мен баратын жолмен келдім ба?

0
System.exit() файлының орнына файл табылмаса, жағдайды қайталайтын аулау циклін неге пайдалану керек?
қосылды автор user991710, көзі

2 жауаптар

Мүмкін, ол үшін оның көмегі болуы мүмкін ... алып тастағаннан кейін пайдаланушыға өзіңіздің таңдалған O/p файлымен мәселе екенін дұрыс хабарлауға болады ... сондай-ақ есептегішті негізгі идеяны жасаңыз, яғни пайдаланушы 2 немесе 3 рет қате файлды таңдаса, онда бағдарлама аяқталады.

0
қосылды

Бұл шексіз циклға ұқсайды, бірақ олай емес. Ол сыртқы жағдайды күтеді. Сіз қанша уақыт күтесіз? Бірақ көп жағдайда, егер сіз пайдаланушыдан бас тартуға рұқсат берсеңіз, сізге ең көп қайталану немесе күту уақыты қажет емес. Пайдаланушы деректерді бергісі келмесе, қолданбаны жою немесе жоюды басады. Немесе бағдарлама мәңгі іске қосылады. Сіз қамқорлық жасайсыз ба?

салыстыру

while (needsUserData) {
   askForUserData()
}

бар

waitForUserData()

Тек регенерацияны жасамаңыз, стака кеңістігін іске қосыңыз =)

0
қосылды
Рахмет, сол уақытта цикл - рекурсиядан гөрі жақсы шешім. Егер жақсы нұсқалар ұсынылмаса, бұл мен үшін баратын жол :)
қосылды автор Maza89, көзі