2012-08-07 2 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);  
} 

и моя цель состоит в том чтобы иметь возможность вводить строку, такую ​​как «hello, world, how, are, you, today», и программа разбивает эту единственную строку на массив строк, таких как «[hello, world, how, are, you, today ] ... Но всякий раз, когда я компилирую этот код, я получаю этот вывод: "keywords = [Ljava.lang.String; @ 43ef9157" может кто-нибудь предложить способ для вывода массива так, как мне нужно?

ответ

3

Sure:

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

Это не расщепление, что вызывает вас проблемы (хотя это не может делать то, что вы хотите) - это тот факт, что массивы не отменяют toString.

+0

Раздражающе не переопределяйте toString(). Может ли кто-нибудь объяснить, почему? –

+2

@ DominicBou-Samra: Не знаю, если честно. К тому времени, как они выяснили, это было неприятно, возможно, было слишком поздно ... –

0

Вы можете попробовать использовать в Java String.Split:

Просто дайте ему регулярное выражение, которое будет соответствовать один (или более) из разделителей вы хотите, и поставить вывод в массив.

Что касается вывода, используйте цикл for или foreach, чтобы просматривать элементы вашего массива и печатать их.

Причина, по которой вы получаете вывод, который вы получаете сейчас, состоит в том, что метод ToString() массива не печатает содержимое массива (как это было бы, скажем, на Python), но печатает тип объект и его адрес.

+0

OP ** ** использует 'String.split()'. –

+0

Да, я видел, что после того, как я разместил и собирался отредактировать ответ. Виноват. – Adrian

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

Это просто другой способ разбить String на String Array. Проблема OP - это * печать * результирующего массива. –

Смежные вопросы