Доброго времени суток. Есть программа, в которой нужно ввести, а потом вывести таблицу выпускников(имя количество дипломов учреждение год окончания) и обрабатывающая 2 исключения, пользовательское и деление на ноль. Так вот, при обработке исключения "деление на ноль", т.е., когда у выпускника ноль дипломов, нужно сделать 2 варианта выхода из цикла: 1)продолжить ввод(т.е. ввести количество дипломов данного выпускника заново и продолжить дальше вводить). 2)начать ввод заново(судя по всему, вообще начать работу программы заново). Не понимаю как это можно осуществить. Заранее огромное спасибо за помощь. Вот имеющийся код. | Код | package lol5.pkg2;
/** * * @author Veta */ import java.io.IOException; import javax.swing.*; public class lol5 {
/** * @param args the command line arguments * @throws java.io.IOException */ public static void main(String[] args) { // TODO code application logic here //инициализация списка допустимых значений String list[] = {"MIIT", "MGU", "MIFI", "IUIT", "ITTSU", "RNI", "IEF", "RGSU", "MGPU", "MIP", "SGU", "MGSU", "MIET"}; int obrCount = list.length;
try{ StringBuffer str=new StringBuffer(); char ch; int n, k=10, g, a, b = 1; boolean flag=true; int sw=0; g=Integer.parseInt(JOptionPane.showInputDialog("Задайте год")); if(flag=true) System.out.println("Введите количество выпускников: "); while((ch=(char)System.in.read())!='\n') str.append(ch); n=Integer.parseInt(str.toString()); String name[]=new String[n]; int kolvo[]=new int[n]; String obr[][]=new String[n][]; int god[][]=new int[n][]; for(int i=0;i<n;i++) { // if(flag==false) break; try{ System.out.println("Введите ФИО выпускника:"); str=new StringBuffer(); while((ch=(char)System.in.read())!='\n') str.append(ch); name[i]=new String(str.toString()); System.out.println("Введите количество дипломов:"); str=new StringBuffer(); while((ch=(char)System.in.read())!='\n') str.append(ch); kolvo[i]=Integer.parseInt(str.toString()); a=b/kolvo[i]; }catch (ArithmeticException e){ System.out.println("Человек не имеет дипломов!\n "); sw=Integer.parseInt(JOptionPane.showInputDialog(" 1-продолжить ввод \n 2-начать ввод ")); switch(sw){ case 1: flag=true; break; case 2: flag=false; break; } } // if(flag==true){
obr[i]=new String[kolvo[i]]; god[i]=new int [kolvo[i]];
for(int j=0;j<kolvo[i];j++){ while(true) try { int f = 0;
System.out.println("Введите название учебного учреждения:"); str=new StringBuffer(); while((ch=(char)System.in.read())!='\n') str.append(ch); obr[i][j]=new String(str.toString()); //проверка ввода на соответствие допустимым значениям for (k = 0; k<obrCount; k++) { if (obr[i][j].compareTo(list[k])==0) f = 1; } //создание исключительной ситуации if (f==0) throw new MyException(1); break; } catch(MyException ex) { System.out.println("Выберите учреждение из списка\n"); for (k = 0; k<obrCount; k++){ System.out.println(list[k]); } } System.out.println("Введите год обучения:"); str=new StringBuffer(); while((ch=(char)System.in.read())!='\n') str.append(ch); god[i][j]=Integer.parseInt(str.toString()); } // } } if(flag==true){ double max=kolvo[0]; int imax=0; int jmax=0; for(int i=0;i<n;i++) for(int j=0;j<kolvo[i];j++){ if (max < kolvo[i]) { max = kolvo[i]; imax=i; jmax=j; } { } } System.out.println("Исходная таблица:"); for(int i=0;i<n;i++){ System.out.print("\n"+name[i]+" "+kolvo[i]); for(int j=0;j<kolvo[i];j++) System.out.print(" образовательное учреждение "+obr[i][j]+" год обучения "+god[i][j]); } System.out.println("\n"+"Результат:"); System.out.println("Выпускник- "+name[imax]+" учреждения- "+obr[imax][jmax]); System.out.println("Выпускники "+g+" года:" ); { for(int i=0;i<n;i++) for(int j=0;j<kolvo[i];j++){ if(g==god[i][j]){ System.out.println(name[i]); } } } } } catch(IOException e){ System.out.println(e.toString()); } } }
|
| Код | package lol5.pkg2;
/** * * @author Veta */ public class MyException extends Exception{ int err; MyException(int e) { System.out.print("Ошибка: "); if (e==1) System.out.println("Данного учреждения нет в списке"); }
}
|
|