Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2014, 17:44   #1
V-alterman
Пользователь
 
Регистрация: 07.12.2013
Сообщений: 26
По умолчанию Помогите доделать программу

Доброго времени суток.
Есть программа, в которой нужно ввести, а потом вывести таблицу выпускников(имя количество дипломов учреждение год окончания) и обрабатывающая 2 исключения, пользовательское и деление на ноль.
Так вот, при обработке исключения "деление на ноль", т.е., когда у выпускника ноль дипломов, нужно сделать 2 варианта выхода из цикла:
1)продолжить ввод(т.е. ввести количество дипломов данного выпускника заново и продолжить дальше вводить).
2)начать ввод заново(судя по всему, вообще начать работу программы заново).
Не понимаю как это можно осуществить.
Заранее огромное спасибо за помощь.
Вот имеющийся код.
Код:
package lol5.pkg2;
public class MyException extends Exception{
  int err;
  MyException(int e)
  {
    System.out.print("Ошибка: ");
    if (e==1) System.out.println("Данного учреждения нет в списке");
  }
}
V-alterman вне форума Ответить с цитированием
Старый 15.11.2014, 17:45   #2
V-alterman
Пользователь
 
Регистрация: 07.12.2013
Сообщений: 26
По умолчанию

Код:
package lol5.pkg2;
import java.io.IOException;
import javax.swing.*;
public class lol5 {
    public static void main(String[] args) {
       //инициализация списка допустимых значений   
    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=0, k=10, g, a, b = 1;
            boolean flag=true;
            int sw=0;
            g=Integer.parseInt(JOptionPane.showInputDialog("Задайте год"));
            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++){
                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;
                    
               }
           }
                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());
                    }
            }
        
         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());
       }
    }
}
V-alterman вне форума Ответить с цитированием
Старый 19.11.2014, 13:06   #3
DmitriB
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 12
По умолчанию

Советую сделать класс студента отдельно и все методы связанные с ним, ввод информации и т. п. Сложно разбираться в таком коде, и вам, и тот кто будет оценивать - не "оценит".
DmitriB вне форума Ответить с цитированием
Старый 19.11.2014, 15:03   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Согласен... Java до мозга костей объектно-ориентированная. У Вас просто поток строк... Разбейте на более мелкие куски. Реализовали небольшой кусок... Проверили и т.д. Нужно привыкать именно к такому стилю.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 19.11.2014, 17:12   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

с пом. throw пробрасываете исключение наверх, по сути в никуда. Зачем?
Если f == 0 то не исключение, а System.out.println('') Все. Это ниразу не исключительная ситуация.

по хорошему, все рапаметры должны читаться внутри бесконечных loop, где консоль читается BufferReader'ом, и анализиуется ввод. Если ввел exit, программа прерывается, иначе пробует использовать введенное, и если неподошло, пишет Ошибка. "Повторите ввод. : ", если подошло, то прерывает этот цикл и идет к следующему. И так со всеми параметрами.

Последний раз редактировалось Человек_Борща; 19.11.2014 в 17:17.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите доделать программу на С anshelika Общие вопросы C/C++ 0 03.01.2014 20:10
Пожалуйста помогите доделать программу Kaddafi Паскаль, Turbo Pascal, PascalABC.NET 2 14.05.2009 21:08
помогите доделать рекурсивную программу ELdarr Общие вопросы C/C++ 0 23.01.2009 23:14