2014-10-12 3 views
-3

Я пытаюсь проверить, если пользователь ввел число, и если нет, то он использует номер по умолчанию, как 10. Как я могу проверить, если пользователь просто нажимает ввод и не вводите ничего в JavaПроверьте, не введен пользователь или нет.

input = scanner.nextInt(); 
pseudo code: 
if(input == user just presses enter without entering anything){ 
    input = 10; 
} 
else just proceed with input = what user entered 
+1

Хорошо, используете сканер для ввода ввода или что? Покажите нам код, в который пользователь вводит свои данные. – DreadHeadedDeveloper

+0

есть сканер, например number = input.Сканер(); –

+0

Хорошо, напишите свой код, который делает это, я могу определенно помочь вам с этим – DreadHeadedDeveloper

ответ

2
//scanner is a Scanner 
int i; // declare it before the block 
try { 
    i = scanner.nextInt(); 
} 
catch (InputMismatchException ime) { 
    i = 10; 
} 
// i is some integer from the user, or 10 
+0

Также необходимо проверить «NoSuchElementException», который вызывается, если пользователь заканчивает сеанс TTY; поэтому, 'InputMismatchException | NoSuchElementException ime' на Java7 или целый новый блок catch на чем-то меньшем. – Qix

+0

Я не хочу исключение, я хочу, чтобы i = 10, если ничего не было введено, так что я делаю –

+0

@RichardBarley Это ** точно **, что ответ делает для вас. Пожалуйста, прочитайте в блоках 'try ... catch'. – Qix

0

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

Scanner in = new Scanner(System.in); 
if in.hasNextInt(){ //Without this, the next line would throw an input mismatch exception if given a non-integer 
    int i = in.nextInt(); //Takes in the next integer 
} 

вы сказали, что значение по умолчанию 10 в противном случае так:

else { 
    int i = 10; 
} 
+0

Отсутствие полуколоней, если оператор синтаксически неверен, не проверяет конец потока. Этот код никогда не будет компилятором под обычным компилятором. – Qix

+0

Извините, не написал java почти год, тоже привык к python :) – Boss1295

+0

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

1

Первые вещи первых, geeeeeez ребята, когда ОП говорит что-то вроде

«Я не хочу, исключение, я хочу, я = 10, если ничего не введено, так что я делаю»

Это должен подсказывать вам, что он, вероятно, слишком мало знает об исключениях (возможно, даже java) и может потребоваться простой ответ. И если это невозможно, объясните ему трудные.

Хорошо, вот простой и простой способ сделать это

String check; 

int input = 10; 

check = scanner.nextLine/*Int*/(); 

if(check.equals("")) 
{ 

    //do nothing since input already equals 10 

} 

else 
{ 

    input = Integer.parseInt(check); 

} 

Позвольте мне объяснить, что делает этот код. Вы изначально использовали nextInt(), чтобы получить свой номер для ввода, правильно? Проблема в том, что nextInt() отвечает только в том случае, если пользователь действительно что-то вводит, а не при нажатии на ввод. Чтобы проверить ввод, мы использовали метод, который фактически реагирует, когда пользователь нажимает вводить и использует это, чтобы гарантировать, что наш код сделает то, что мы хотели. Одна вещь, которую я рекомендую использовать, - это API, у нее есть Java.

Вот ссылка на API HERE

А вот ссылка на фактический метод я использовал HERE. Вы можете найти описания и инструкции по многим методам, с которыми вы столкнетесь в этом API.

Теперь, вернемся к моему ответу, это простой способ сделать это. Проблема в том, что этот код не обязательно безопасен. Это вызовет исключения, если что-то пойдет не так, или если кто-то пытается взломать вашу систему. Например, если вы должны были ввести букву вместо нажатия ввода или ввода номера, это вызовет исключение. То, что вы видели в других ответах, - это то, что мы называем обработкой исключений, поэтому мы исключаем исключения. Если вам нужен ответ, который поймает большинство этих исключений, вам нужно убедиться, что ваш код их ловит, или избегает их всех вместе (я очень упрощаю ситуацию). Вышеприведенный ответ - это рабочий код, но это не безопасный код, вы бы никогда не использовали что-то подобное себе в реальной жизни.

Вот что можно считать безопасным кодом. И никаких исключений, чтобы это было просто! ;)

import java.util.Scanner; 

public class SOQ15 
{ 

    public Scanner scanner; 

    public SOQ15() 
    { 

     scanner = new Scanner(System.in); 

     int input = 10; 

     boolean isAnInt = true; 

     String check; 

     check = scanner.nextLine/*Int*/(); 

     if(check.equals("")) 
     { 

     //do nothing since input already equals 10 

     } 


     for(int i = 0; i < check.length(); i++) 
     { 

     if(check.charAt(i) >= '0' && check.charAt(i) <= '9' && check.length() < 9) 
     { 

     //This is if a number was entered and the user didn't just press enter 

     } 

     else 
     { 

      isAnInt = false; 

     } 



     } 

     if(isAnInt) 
     { 

     input = Integer.parseInt(check); 
     System.out.println("Here's the number - " + input); 

     } 

    } 

    public static void main(String[] args) 
    { 


     SOQ15 soq = new SOQ15(); 


    } 

} 

У меня нет времени, чтобы пойти во все детали прямо сейчас, но спросить, и я с удовольствием буду отвечать, когда я получаю время! :)

Смежные вопросы