2016-02-18 10 views
0
import java.util.Scanner; 

class Friendship 
{ 
    public static void main (String args[]) 
    { 
     Scanner a1=new Scanner (System.in); 
     System.out.println("Enter your name"); 
     String me=a1.nextLine(); 

     System.out.println(" "); 

     Scanner b1=new Scanner (System.in); 
     System.out.println("Enter your partners name"); 
     String you=b1.nextLine(); 

     String both=me+you; 

     String [] names = both.split("\\s+"); 

     for(int ch1=0; ch1<names.length; ch1++) 
     { 
      System.out.println(names[ch1] + " "); 
     } 

    } 
}  

Это не работает для меня. Я хочу разбить буквы, а также удалить пробелы между словами. Я нашел это на сайте, но он говорит: «String не может быть преобразован в int», когда я запускаю его.Разделительные символы в JAVA

Вход -

Ваше имя - Белоснежка

Ваши партнеры имя - Фердинанд

Output- 
S 
n 
o 
w 
W 
h 
i 
t 
e 
F 
e 
r 
d 
i 
n 
a 
n 
d 
+0

Что входной выборки и ожидаемые результаты ?. Вы должны попробовать '\\ s +', и split не принимает другую строку (arg 2) – TheLostMind

+0

Что означает '' оба? –

+1

Извините, здесь недостаточно информации, чтобы ответить или даже понять ваш вопрос. Вы должны представить полный пример, который может компилировать кто-то другой. Например, что такое декларация «обоих»? Пожалуйста, найдите время, чтобы посетить [помощь], а также прочитать [ask]. –

ответ

0

Becausde метод, который вы вызываете т.е. 2 параметров является

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String,%20int)

где второй параметр является int

это звучит, как вы хотите использовать String.replaceAll (String regex, String)

Редактировать

основан на ваш комментарий здесь нет места между мной и вами строк , поэтому раскол не будет работать.

0

String.split(String) не принимает два аргумента String.

String [] names = both.split("\\s+"); 

Единственный вариант split (String.split(String, int)) является то, что компилятор пытается использовать и String не является int как говорит ваше сообщение об ошибке.

Основываясь на ваш комментарий выше, почему бы не петля над me и you и пропустить все белое пространство, строительство временного String (s) не является эффективным частичном (особенно, если просто хотите разделить снова и отображать не-пробельных символов)

for (char ch : me.toCharArray()) { 
    if (!Character.isWhitespace(ch)) { 
     System.out.println(ch); 
    } 
} 
for (char ch : you.toCharArray()) { 
    if (!Character.isWhitespace(ch)) { 
     System.out.println(ch); 
    } 
} 
0

Если вы хотите использовать REG-ех:

Pattern p = Pattern.compile("\\w"); 
    Matcher m = p.matcher("Snow White"); 
    while(m.find()){ 
     System.out.print(m.group()); 
    } 
    System.out.println(); 

Это вывод SnowWhite каждый символ отдельно, хотя.

1

Ну, если вы должны использовать split() вот нестандартный способ сделать это:

public static void main(String[] args) { 
    String s1 = "Snow White"; 
    String s2 = "Ferdinand"; 
    String s= s1+s2; 
    String[] arr = s.split("(?!\\s)"); // Thanks to Matt for correcting it. 
    for(String str : arr) 
     System.out.println(str); 
} 

O/P:

S 
n 
o 
w 
W 
h 
i 
t 
e 
F 
e 
r 
d 
i 
n 
a 
n 
d 
+0

Ужасно, кажется, что '' (?! \\ s) "' достаточно. – matt

+0

@matt - Конечно (Facepalm) \\ G ничего не делает здесь – TheLostMind