Как я могу проверить, является ли ввод пользователя словом?

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

scanner.hasNextInt();
scanner.hasNextDouble();

Но я не думаю, что есть один для строк.

Как я могу проверить ввод строки?

Редактировать:

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

Я новичок в программировании и не знал, что строка что-то значит.


person Adam Jarvis    schedule 07.10.2015    source источник
comment
@AvinashRaj Разве это не требует какого-либо ввода? Мне нужно убедиться, что ввод не является ничем иным, как строкой.   -  person Adam Jarvis    schedule 07.10.2015
comment
@AdamJarvis: Какая последовательность символов не будет строкой? Строка может быть буквально что угодно.   -  person David    schedule 07.10.2015
comment
@AdamJarvis, как вы определяете не что иное, как строку. Вы имеете в виду, что если это 123, это не строка?   -  person ControlAltDel    schedule 07.10.2015
comment
@ Дэвид Ты прав. Итак, есть ли способ специально проверить слово на человеческом языке?   -  person Adam Jarvis    schedule 07.10.2015
comment
@AdamJarvis: Это намного более важный вопрос, чем вы, вероятно, понимаете. Существует много языков с много слов. И даже слова, которые на самом деле не существуют ни в одном словаре, все равно являются совершенно громоздкими словами. Вам нужно правильное написание? А имена? Что угодно может быть именем. Как вы определяете слово человеческого языка? С лингвистической точки зрения все, что выражает идею от одной сущности к другой, является действительным языком.   -  person David    schedule 07.10.2015
comment
Для этого у них есть словари.   -  person    schedule 07.10.2015
comment
Это относится к области обработки естественного языка.   -  person Some guy    schedule 07.10.2015
comment
Итак, все началось с того, что я попытался сделать игру-палач, чтобы больше практиковать Java. Я пытаюсь убедиться, что игрок вводит слово в исходный ввод, чтобы другой игрок мог его угадать.   -  person Adam Jarvis    schedule 07.10.2015
comment
@AdamJarvis Вам действительно следует обновить заголовок и содержание вашего вопроса, чтобы было ясно, что вы спрашиваете о словах, а не Strings.   -  person azurefrog    schedule 07.10.2015
comment
Как личное мнение... Такое ограничение выглядит искусственно ограничивающим. Пользователи могут захотеть использовать слова, не являющиеся словарными. Имена собственные, места, выдуманные, но все же общеизвестные слова, фразы, составные семантические структуры и т. д. Звучит так, будто вы пытаетесь использовать технологии для решения нетехнической проблемы. Если пользователь создает игру, в которой слово имеет вид f444-=ewf-=-.wrg или даже содержит непечатаемые символы, то люди, скорее всего, просто перестанут играть с этим пользователем.   -  person David    schedule 07.10.2015
comment
Вам понадобится файл словаря, который вы сможете загрузить в игру, и в зависимости от того, какие другие слова вы хотите разрешить (названия мест и т. д.), вам придется добавить это в файл. Кроме того, вы можете проверить, является ли строка возможным словом, используя регулярное выражение, чтобы убедиться, что она содержит только буквы, которые можно набирать, и исключает цифры.   -  person Austin    schedule 07.10.2015


Ответы (3)


Если вы хотите проверить, состоит ли это слово из символов алфавита, вы можете создать цикл, перебирающий каждый символ и проверяющий его код ascii. Для символов 'A' - 'Z' это будет char>64 && char‹91.

Если вы хотите проверить настоящие слова, вам обязательно нужно создать словарь слов, которые можно использовать.

person Vivico    schedule 07.10.2015

Вы можете попробовать этот код для базовой проверки

импортировать java.util.Scanner;

открытый класс InputValidation {

public static void main(String[] args) {
    String input;
    try {
        System.out.println("Enter the input");
        Scanner s = new  Scanner(System.in);

        input = s.next();
        if(input.matches(".*\\d.*")){
            System.out.println(" Contains digit only");
        } else{
            System.out.println(" Only String/words found");
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

} Для лучшего способа сообщите мне точную функциональность, которую вы хотите реализовать

person mohit sharma    schedule 08.10.2015

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

import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    System.out.print("Enter a word: ");
    Scanner answer = new Scanner(System.in);
    String word = answer.next();
    switch (word) {
      case "dog":
      case "cat":
      case "mouse":
      case "elephant":
      case "lion":
      // List all your words above...
      System.out.println("Word accepted.");
      break;
      default: // If user inputs a word that is not in list.
      System.out.println("You must enter a qualified word!");   
    }
  }  
}

ИЗМЕНИТЬ

Если у вас много слов, лучшим способом может быть создание файла .txt и сохранение всех слов внутри файла, по одному слову в каждой строке. Затем используйте программу Java для поиска в текстовом файле, чтобы узнать, находится ли слово в текстовом файле.

person ublec    schedule 18.02.2021