2016-01-08 4 views
0

Я действительно новичок в изучении Java, и я пытаюсь изменить ввод пользователя на нижний регистр (или в верхний регистр). Однако это не работает. Любое предложение?Изменение ввода пользователя на нижний регистр

protected String nextMove() 
{ 
    System.out.println("Please enter move"); 
    Scanner in = new Scanner(System.in).toUpperCase(); 

    while (!in.hasNext("['a','b','c']")) 
    { 
    String move; 
    System.out.println("That is not a valid guess"); 
    move = in.nextLine(); 
    in.close(); 
    return move; 
} 
return nextMove(); 
} 
+1

Вы пытаетесь поставить сканер к верхнему регистру, я не думаю, что это нравится гораздо , – Berger

+0

Ну ладно, так просто, как изменить его и поместить (toUpperCase) на другую строку? – Brigzy97

+0

'\t \t в то время как (in.hasNext ("[ 'а', 'б', 'с']")!) \t \t { \t \t \t Строка движение; \t \t \t System.out.println («Это недопустимое предположение»); \t \t \t move = in.nextLine(); \t \t \t in.close(); \t \t \t return move; \t \t} \t \t возвращение nextMove(); \t} ' Это следующий код – Brigzy97

ответ

3

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

Вы могли бы просто сделать:

String myLowerCaseInput = in.nextLine().toLowerCase(); 

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

protected String nextMove(Scanner in) { 
    System.out.print("Please enter move: "); 
    return in.nextLine().toLowerCase(); 
} 

или лучше ...

private static String nextMove(Scanner in) { 
    String input = ""; 
    do { 
     System.out.print("Please enter move: "); 
     input = in.nextLine().trim().toLowerCase(); 
    } while (input.isEmpty() || input.length() != 1 || !"abc".contains(input)); 
    return input; 
} 
+0

Так ли это из-за линии, которую я делаю тогда? – Brigzy97

+0

@ Brigzy97: сканер предназначен для ввода, а не для перевода или преобразования. Вы хотите преобразовать полученную строку. –

+0

Я думаю, что тот, кто задал мне эту задачу, хотел, чтобы я сделал Сканер. Но я попробую и посмотрю, что они говорят. Благодарим за помощь. – Brigzy97

0

Попробуйте использовать это:

Scanner in = new Scanner(System.in);  
while (!in.hasNext("['a','b','c']")){ 
    String upercase = in.nextLine().toUpperCase(); 
    ... 
Смежные вопросы