2012-08-07 65 views
0

我已經徹底地研究這個問題上,包括本網站上的問題和答案.... 這是我的基本代碼:分手在Java中的字符串轉換爲字符串數組

import java.util.Scanner; 
class StringSplit { 
public static void main(String[] args) 
{ 
    System.out.println("Enter String");  
    Scanner io = new Scanner(System.in); 
    String input = io.next(); 
    String[] keywords = input.split(" "); 
    System.out.println("keywords" + keywords);  
} 

,我的目標是能夠輸入一個像「你好,世界,你是如何,今天」這樣的字符串,並讓程序將這個單獨的字符串分解爲一個字符串數組,例如「[你好,世界,你,今天,你,今天] ... 但是,每當我編譯此代碼,我得到這個輸出: 「關鍵字= [Ljava.lang.String; @ 43ef9157」 任何人都可以提出一種方式,我需要的方式輸出數組?

回答

3

肯定的:

System.out.println("keywords: " + Arrays.toString(keywords)); 

這並不是說是造成你的問題(雖然它可能不會做你想要的)分裂 - 這是一個事實,即陣列不覆蓋toString

+0

令人討厭的是不覆蓋toString()。誰能解釋爲什麼? – 2012-08-07 00:28:02

+2

@ DominicBou-Samra:說實話,不知道。當他們發現它很煩人時,可能已經太晚了...... – 2012-08-07 00:30:33

0

你可以嘗試使用Java的String.Split

只要給它一個正則表達式將匹配你想要的定界符的一個(或多個),並把你的輸出到一個數組。

至於輸出,可以使用for循環或foreach查看來遍歷數組的元素並打印它們。

你現在得到輸出的原因是數組的ToString()方法不打印數組內容(就像在Python中那樣),而是打印出對象和它的地址。

+0

OP **是**使用'String.split()'。 – 2012-08-07 00:30:08

+0

是的,在我發佈並準備編輯回覆後,我看到了。我的錯。 – Adrian 2012-08-07 00:31:47

0

此代碼應工作:

String inputString = new String("hello, world, how, are, you, today");  
Scanner scn = new Scanner(inputString); 
scn.useDelimiter(","); 
ArrayList<String> words = new ArrayList<String>(); 
while (scn.hasNext()) { 
    words.add(scn.next()); 
} 

//To convert ArrayList to array 
String[] keywords = new String[words.size()]; 
for (int i=0; i<words.size(); ++i) { 
    keywords[i] = words.get(i); 
} 

的useDelimiter函數使用逗號分隔的話。希望這可以幫助!

+0

這只是將字符串拆分爲字符串數組的另一種方法。 OP的問題是*打印*結果數組。 – 2012-08-07 01:03:01