0

このウェブサイトの質問と回答を含め、この主題を徹底的に調査しました....これは私の基本的なコードです:

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);      
}   

そして私の目的は、「こんにちは、世界、どうですか、あなた、今日」のような文字列を入力し、プログラムにこの単一の文字列を「[こんにちは、世界、どうですか、ある」のような文字列の配列に分割させることです。 、あなた、今日]...しかし、このコードをコンパイルすると、常に次の出力が得られます: "keywords = [Ljava.lang.String;@43ef9157" ?

4

3 に答える 3

3

もちろん:

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

問題を引き起こしているのは分割ではありません(ただし、必要なことを実行していない可能性があります)-配列がオーバーライドしないという事実ですtoString

于 2012-08-07T00:25:59.357 に答える
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関数は、コンマを使用して単語を区切ります。お役に立てれば!

于 2012-08-07T00:47:38.340 に答える
0

Java のString.Splitを使用してみることができます。

必要な区切り文字の 1 つ (または複数) に一致する正規表現を指定し、出力を配列に入れるだけです。

出力に関しては、for ループまたは foreach ルックを使用して、配列の要素を調べて出力します。

現在取得している出力を取得している理由は、配列の ToString() メソッドが配列の内容を (たとえば Python のように) 出力せず、オブジェクトの型とそのアドレスを出力するためです。 .

于 2012-08-07T00:29:14.130 に答える