2015-03-23 3 views
1

Ну, я программирую систему аренды автомобилей с клиентами, и у них есть идентификационная карточка. Во время аренды автомобиля клиент должен идентифицировать себя с идентификатором, так что мне нужно пользовательское исключение, которое обрабатывает, если вход пользователя 8 номеров и одна буква, например:Custom Exception-Java

55550000A 

Я уже сделал исключение для если вход INT или нет, и он идет:

import java.util.*; 
    import java.util.Scanner; 
public class read { 
static Scanner leer=new Scanner(System.in); 
public static int readInt() { 
    int num = 0; 
    boolean loop = true; 

    while (loop) { 
     try { 
      num = leer.nextInt(); 
      loop = false; 
     } catch (InputMismatchException e) { 
      System.out.println("Invalid value!"); 
      System.out.println("Write again"); 
    leer.next(); 
     } 
     } 
    return num; 
    } 
} 

Единственное, что вам нужно сделать, это объявить переменную и вызвать метод как это:

int variable=read.readInt(); 

Так это было бы хорошо если id мог бы работать так, я имею в виду еще один метод readId(), который вернет значение. Дело в том, что я не знаю, как сделать исключение для пользовательского формата или если это возможно, поэтому любая помощь будет полезна. Большое спасибо!

+2

JavaScript не имеет ничего общего с Java. – epascarello

+0

, вы не создали никакого настраиваемого исключения, а также не подтвердили ввод – Prashant

+1

И что именно ваша проблема? Значение: я не вижу пользовательского исключения в вашем коде; и я не вижу никакой конкретной проверки формата. Незначительный намек: вызов класса 'read' - плохая идея; в соответствии с обычными соглашениями об именах Java, классы всегда начинаются с буквы верхнего регистра. – GhostCat

ответ

1

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

Создайте файл MyAppException.java

class MyAppException extends Exception { 

private String message = null; 

public MyAppException() { 
    super(); 
} 

public MyAppException(String message) { 
    super(message); 
    this.message = message; 
} 
} 

Вы можете бросить его через

throw new MyAppException(); 

Но я предполагаю, что исключение не требуется для того, что вы хотите:

public static String readId() { 
    String id = ""; 
    while(true){ 
     id = leer.next(); 
     try{ 
      Integer.parseInt(id.substring(0,8)); 
     }catch(InputMismatchException e){ 
      System.out.println("Invalid Input"); 
      continue; 
     } 
     if(id.length() != 9)continue; 
     if(Character.isLetter(id.chatAt(8)))break; 
    } 
    return id; 
} 
+0

У вас неправильное правописание в вашем ответе: if (Character.isLetter (d.charAt (8))) break; –

+0

Да, я должен был только спросить, как проверить, имеет ли строка определенный формат :) Спасибо! – Supersoaker

+0

Спасибо @evan и uw Supersoaker – frunkad

0

@ epascarello является правильным, кроме Java в их именах, они оба очень разные, так как для вопроса, попробуйте сделать обычай e xception так:

public class InputMismatchException extends Exception { 
    public InputMismatchException(String message) { 
     super(message); 
    } 
} 
0

Как правило, вы только хотите бросить исключения, чтобы предотвратить какие-то ошибки в результате чего ваша программа полностью потерпеть неудачу в той или иной форме. A лучше Решение должно заключаться в проверке ввода до его использования позднее в программе. Создайте условия, которые проверяют, является ли вход желаемой длиной и типом данных, если это не так, вам нужно снова ввести этот ввод.

Использование исключений чрезмерно указывает на плохой дизайн и потенциальные серьезные проблемы, если код впоследствии будет изменен.

0

Создать собственное исключение, расширив Exception -

class InvalidIdException extends Exception 
{ 
     public InvalidIdException() {} 

     public InvalidIdException(String message) 
     { 
     super(message); 
     } 
} 

И от вашего клиента проверки класса, является ли входной идентификатор или нет. Если это недопустимый идентификатор, то throwInvalidIdException. Предположим, что вы проверяете свой идентификатор в методе validateId(). Затем вы можете бросить InvalidIdException от этого метода -

boolean isValidId(String id) throws InvalidIdException{ 

    if(id == null){ 
      throw new InvalidIdException("Id is null"); 
     } 
    else { 
    //check for id formatting 
    //for example whether id has it's minimum length 
    //contains any character etc. 
    throw new InvalidIdException("Id has wrong format"); 
    } 

    return true; 
}