2016-11-06 58 views
-2
Scanner in= new Scanner(System.in); 
int len=in.nextInt(); 
String s=in.next(); 
char[] ch=s.toCharArray(); 
System.out.println(len); 
System.out.println(ch.length); 

我已經Java的toCharArray()方法

400004 
//and a string of length 400004 

產量爲

400004 
8190 

我知道當我們使用toCharArray(),然後返回一個提供輸入運行該代碼段char數組的長度與String相同。但在這裏它是難以置信的。 我無法理解這是怎麼回事。 請幫我看看這裏。

+1

爲什麼不使用's.length()'? – ItamarG3

+4

字符串中是否有空格? –

+0

嘗試使用調試器。它會告訴你這個數組是什麼樣的。 –

回答

0

您肯定會複製並粘貼包含換行符或其他字符的字符串,這會使next方法返回Scanner。因此,只有部分字符串被複制到s

0

我試過這段代碼,由於命令提示符緩衝區的限制,只有length = 8190字符串被輸入到String變量中。

你可以嘗試從文本文件獲取輸入,它的工作原理。

查看我的代碼,以供參考。

Scanner in = new Scanner(System.in);   
    int n=0; 
    String number=null; 
    BufferedReader br = null; 
    FileReader fr = null; 
    try { 

     br = new BufferedReader(new FileReader("txt file path")); 

     String len= br.readLine(); 
     n=Integer.parseInt(len); 
     number = br.readLine(); 
     } 
catch (IOException e) { 
     e.printStackTrace(); 
    }