2012-08-07 66 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