2013-11-14 60 views
1

我有以下代码需要从用户处取出10个字符并以相反顺序将其打印出来。我似乎无法通过Scanner这一个语法错误。我怎样才能一次输入一个字符?这是我到目前为止:将字符读入数组

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(索引),因为他总是想要第一个字母。

+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