2013-11-14 3 views
1

У меня есть следующий код, который должен взять у пользователя 10 символов и распечатать их в обратном порядке. Кажется, я не могу пройти эту синтаксическую ошибку для Scanner. Как я могу ввести один символ за раз? Вот то, что я до сих пор:Чтение Char Into Array

import java.util.Scanner; 

public class ReverseOrder 
{ 
    //----------------------------------------------------------------- 
    // Reads a list of char from user and prints in reverse. 
    //----------------------------------------------------------------- 
    public static void main (String[] args) 
    { 
     Scanner scan = new Scanner (System.in); 

     char[] letters = new char[10]; 

     System.out.println ("The size of the array: " + letters.length); 
     for (int index = 0; index < letters.length; index++) 
     { 
     System.out.print ("Enter number " + (index+1) + ": "); 
     letters[index] = scan.nextchar(); //doesnt like this line 
     } 

     System.out.println ("The numbers in reverse order:"); 

     for (int index = letters.length-1; index >= 0; index--) 
     System.out.print (letters[index] + " "); 
    } 
} 
+1

Также см http://stackoverflow.com/questions/18746185/why-doesnt-the-scanner-class-have -a-nextchar-method и http://stackoverflow.com/questions/2597841/scanner-method-to-get-a-char и http://stackoverflow.com/questions/19417813/compiler-says-java-code -is-invalid/19417824 # 19417824 – Justin

ответ

0

char c = scan.nextLine(). CharAt (0);

он должен быть charAt (0) не charAt (index), потому что он всегда хочет первую букву.

+0

Я запустил его. Спасибо вам всем за помощь! – Lou44

+0

, пожалуйста, выберите ответ, который вы принимаете по этому вопросу. спасибо – user2664856

1

К сожалению, nextChar() это не метод. Это можно решить, используя вместо этого next().charAt(0)!

public class ReverseOrder 
{ 
    //----------------------------------------------------------------- 
    // Reads a list of char from user and prints in reverse. 
    //----------------------------------------------------------------- 
    public static void main (String[] args) 
    { 
     Scanner scan = new Scanner (System.in); 

     char[] letters = new char[10]; 

     System.out.println ("The size of the array: " + letters.length); 
     for (int index = 0; index < letters.length; index++) 
     { 
     System.out.print ("Enter number " + (index+1) + ": "); 
     letters[index] = scan.next().charAt(0); 

     } 

     System.out.println ("The numbers in reverse order:"); 

     for (int index = letters.length-1; index >= 0; index--) 
     System.out.print (letters[index] + " "); 
    } 
} 
+0

Как читать в «символах»? – Lou44

+0

почему создание строки «in», если вы просто можете вызвать >> char c = scan.nextLine(). CharAt (0); < user2664856

+0

@ user2664856 Я только что редактировал его код, обновил его и упростил сейчас. В конце концов, это не имеет никакого значения? Это все читаемость и обсуждение элегантности кода снова); – knordbo

1

Вы можете использовать в вашем случае:

letters[index] = scan.nextLine().charAt(0); 

в качестве замены для scan.nextchar();

2

Вы также можете распечатать их в обратном порядке без использования цикла:

System.out.println("The numbers in reverse order:"); 
System.out.println(new StringBuilder(new String(letters)).reverse()) 
+1

Это хороший момент. Однако это не вопрос. Ответчик спрашивает, как использовать что-то вроде 'Scanner.nextChar()' – Justin