2017-01-15 3 views
-1

Я создал программу регистрации демо с добавленными потоками для тестирования. Имя пользователя не может быть просто числом (пример username = 141235), но это может быть что-то вроде (имя пользователя = John124). У меня есть генерическое исключение, но это не мешает. Может ли кто-нибудь помочь?String/int Исключение Catch в Java

package com.company; 


import java.util.Scanner; 


public class tested extends Thread { 
    Scanner charles = new Scanner(System.in); 
    @Override 
    public void run() { 
     System.out.println("New User Sign On"); 
     System.out.println("==================="); 
     System.out.println("Please Enter A New User Name"); 
     try{ 
     String choose = charles.nextLine(); 
      System.out.println("Submitting....."); 
     Thread.sleep(2000); 
      System.out.println("Cross Referencing Username......"); 
      //Checking for username in database 
      Thread.sleep(2000); 
      System.out.println("New Username Accepted"); 
      //Username added to database 
      Thread.sleep(900); 
      System.out.println("Your new username is "+choose+". Now enjoy our FREE services."); 
    }catch (Exception e){ 
      getStackTrace(); 
     } 
} 
} 
+2

_ «Я родовое исключение вызывается, но это не препятствует его» _ - жаль, что не распознаваем английский , Не могли бы вы прояснить, что вы имеете в виду? Если есть исключение, включите также полную трассировку стека. –

ответ

-1

Добавить оператор try внутри оператора if. В заявлении должно быть charles.hasNextLine() как условие.

+0

Можете ли вы объяснить, как это отвечает на вопрос? Вы можете предоставить пример кода, чтобы проиллюстрировать вашу точку. – soundslikeodd

0

Используйте что-то вроде этого. Он заменяет все числа на пустые.

do { 
System.out.println("Please enter a username"); 
choose=charles.nextLine(); 
} while (choose.replaceAll("\\d", "").equals("")) 
0

Я не могу отлаживать вашу программу, потому что она не кажется полной. Однако, если частью вашей цели является применение определенных правил для имени пользователя, вы должны сначала четко определить, что такое правила. Например, разрешено ли «123456a»? (Он имеет как цифры, так и альфу, но также начинается с цифры). И затем вы можете использовать регулярное выражение, чтобы выразить свои правила и выполнить проверку. Следующая программа предполагает определенные правила:

public class ValidUsername { 

    public static void main(String[] args) { 
     String[] tests = { 
       "123456"  // expect invalid: not start with alpha 
       , "a123456"  // expect valid 
       , "123456a"  // expect invalid: not start with alpha 
       , ""   // expect invalid: not start with alpha 
       , "a"   // expect valid 
       , "a12345678" // expect invalid: too many characters 
     }; 

     /* 
     * username must start with an alpha characters [a-zA-Z], 
     * and then follow by not more than 7 alphanumeric characters 
     */ 
     String regex = "[a-zA-Z]\\w{0,7}"; 
     for (String test: tests) { 
      boolean match = test.matches(regex); 
      System.out.format("test %10s %6s a valid username%n" 
        , test, (match ? "is" : "is not")); 
     } 
    } 

} 

Вывод этой программы:

test  123456 is not a valid username 
test a123456  is a valid username 
test 123456a is not a valid username 
test   is not a valid username 
test   a  is a valid username 
test a12345678 is not a valid username