2014-01-26 4 views
0

В настоящее время я пытаюсь написать простую программу диалога ввода, где пользователю предлагается ввести свое имя. Я хочу создать оператор if, если пользователь вводит какой-либо номер или специальный символ, после чего пользователю предлагается использовать символы a-z и попросить повторно ввести имя. вот мой код до сих пор, и я не уверен, как даже написать оператор if, ошибка, которую я получаю, - это несравнимые типы данных. Строки и целые числа.Java: If (сравнение строк с целыми числами)

public class inputdialogbox { 
    public static void main(String[] args) { 
     Scanner user_input = new Scanner(System.in); 
     String first_name;  
     first_name = JOptionPane.showInputDialog(null, "Please enter your First Name", 
     "User's Name",JOptionPane.QUESTION_MESSAGE); 
     int intValue = Integer.parseInt(first_name); 
     if (first_name == intValue); 
+0

ли вы знаете о регулярном выражении? –

+0

Добро пожаловать в SO. Перед отправкой необходимо найти существующие аналогичные вопросы. Если вы посмотрите на «Связанные» ссылки справа, есть аналогичные результаты. – OldProgrammer

+0

Нет, я не знал о регуларессексах. – user3238694

ответ

0

Regex: [A-Za-z ]+

Средства

[    //Each character must be... 
    A-Z   //a capital letter OR 
    a-z   //a lower-case letter OR 
    __A_SPACE__ //a space 
]+    //and there must be between 1 and infinity of these characters 

Рабочий пример:

import java.util.regex.Pattern; 
/** 
    <P>{@code java LettersOnlyXmpl}</P> 
**/ 
public class LettersOnlyXmpl { 
    public static final void main(String[] igno_red) { 
    Pattern pLettersOnly = Pattern.compile("[A-Za-z ]+"); 
     test(pLettersOnly, "Obama"); 
     test(pLettersOnly, "Kermit The Frog"); 
     test(pLettersOnly, "The QuIcK brown FOx JUMPED over the lazy DOg"); 
     test(pLettersOnly, "23874298374"); 
    } 
    private static final void test(Pattern p_p, String s_name) { 
     System.out.print(s_name + "..."); 
     if(p_p.matcher(s_name).matches()) { 
     System.out.println("Contains only letters and spaces. Good."); 
     } else { 
     System.out.println("ERROR: Must contain letters and spaces only."); 
     } 
    } 
} 

Выход:

Obama...Contains only letters and spaces. Good. 
Kermit The Frog...Contains only letters and spaces. Good. 
The QuIcK brown FOx JUMPED over the lazy DOg...Contains only letters and spaces. Good. 
23874298374...ERROR: Must contain letters and spaces only. 
+0

Как Обама считал ошибку, если он содержит только символы, указанные в «[A-za-z] + – user3238694

+0

. Можете ли вы установить« БЫСТРОЕ ВОЛОСНОЕ ВОСПРОИЗВЕДЕНИЕ НА ЛАЗУЮ СОБАКУ », а в нижнем регистре и смесь верхних – user3238694

+0

Код верный, выход был из предварительной версии. Извините, что исправлено: – aliteralmind

0

Вы можете узнать, как использовать регулярные выражения, или вы можете проверить, введен ли пользователь недопустимый символ. Похоже, то, что вы пытаетесь сделать, это проверить символы, введенные пользователем, то есть проверить, что все символы в строке находятся в наборе символов из a-z. Итак, почему бы вам не проверить, что символы действительны, а не недействительны, и некоторые возможные целые типы?

Узнайте о Итерируя символы из строки с Шаром здесь http://www.tutorialspoint.com/java/java_string_charat.htm

Не беспокоить преобразование строки в целое число, только петли строки и проверить, что каждый символ по отдельности в списке разрешенного или диапазоне.

+0

Удивительно, поэтому то, что я делал, пыталось установить петлю для каждого возможного ввода, что не то, что можно ожидать? Не уверен, правильно ли я спросил. Что вы говорите, чтобы задать предопределенный список символов до того, как пользователю будет предложено ввести данные? – user3238694

+0

Список может быть предопределен многими возможными способами, что-то неявное с циклом for или, может быть, массив (или строка) допустимых символов. Затем вводится один цикл и сравниваются данные. –

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