2013-11-14 64 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