2017-10-11 36 views
1

美好的一天,夥計, 我正在研究一個需要我輸入名字的程序(例如Patrick-Connor-O'Neill)。該名稱可以由儘可能多的名稱組成,因此不一定只限於上面示例中所示的3個名稱。但程序的要點是返回首字母縮寫,所以在這種情況下PCO。我寫信要求澄清一下。我需要先將名字從連字符中分開,對吧?那麼我需要把名字的第一個字母打印出來? 無論如何,我的問題基本上是如何分開字符串,如果我不知道輸入了多少?我得到的,如果它只是像兩個方面,我會做:在java中分離未知數量的連字符?

final String s = "Before-After"; 
final String before = s.split("-")[0]; // "Before" 

我確實嘗試做的代碼,而我至今是:

import java.util.Scanner; 
public class main { 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     String input = scan.nextLine(); 
     String[] x = input.split("-"); 
     int u =0; 
     for(String i : x) { 
      String y = input.split("-")[u]; 
      u++; 
     } 
    } 
} 

我正在速成班在編程中,簡單的概念對我來說很難。感謝閱讀!

回答

1

您不需要再次拆分它。通過做String[] x = input.split("-");你有一個字符串數組。現在你可以迭代它們,你已經用增強的for循環做了。它應該是這樣的

String[] x = input.split("-"); 
String initials = ""; 
for (String name : x) { 
    initials += name.charAt(0); 
} 
System.out.println(initials); 

這裏有一些Java文檔的使用方法

+0

哦,我明白了,我可以只問什麼「的縮寫+ = names.charArt(0 );」呢?如果我理解代碼背後的邏輯,我更容易記住它們(也非常感謝你)。 –

+0

@ E.af我在底部添加了一些鏈接。 '+ ='是一個賦值操作符,'charAt'是一個從String中獲取某個索引字符的方法。零是第一個字符。 –

+0

好的,我現在就去看看,再次感謝你! –

0

這可能有助於

String test = "abs-bcd-cde-fgh-lik"; 
    String[] splitArray = test.split("-"); 
    StringBuffer stringBuffer = new StringBuffer(); 
    for (int i = 0; i < splitArray.length; i++) { 
     stringBuffer.append(splitArray[i].charAt(0)); 
    } 
    System.out.println(stringBuffer); 
} 

使用StringBuffer可以節省您的內存,因爲如果使用String,每次修改它時都會創建一個新對象。

+0

使用StringBuilder(根據您的評論)不是StringBuffer(根據您的代碼) –

1

您可以在不拆分字符串的情況下使用String.indexOf來查找下一個-;然後就後續字符附加到縮寫:

String initials = "" + input.charAt(0); 
int next = -1; 
while (true) { 
    next = input.indexOf('-', next + 1); 
    if (next < 0) break; 
    initials += input.charAt(next + 1); 
} 

(有很多在這裏沒有處理邊界情況;省略整個方法的要點得到)。

0

在你for-each循環追加String數組中的所有元素的第一個字符到輸出字符串,以獲得縮寫:

String output = ""; 

for(String i : x) {  
    output = output + y.charAt(0); 
} 
0

這將幫助。

public static void main(String[] args) { 
    String output = ""; 
    String input = "Patrick-Connor-O'Neil-Saint-Patricks-Day"; 

    String[] brokenInput = input.split("-"); 

    for (String temp : brokenInput) { 
     if (!temp.equals("")) 
      output = output + temp.charAt(0); 
    } 
    System.out.println(output); 
} 
0

你可以完全嘗試這樣的事情(你的代碼的一個小重構):

import java.util.Scanner; 

public class main { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     String input = ""; 
     System.out.println("What's your name?"); 

     input = scan.nextLine(); 

     String[] x = input.split("-"); 
     int u =0; 

      for(String i : x) { 
       String y = input.split("-")[u]; 
       u++; 
       System.out.println(y); 
      } 
    } 
} 

我認爲,如果你想簡單孤立的縮寫是從這裏很容易和簡單。如果您是Java新手,請確保您使用了大量的System.out,因爲它可以幫助您進行很多調試。

好的編碼。

編輯:您可以使用@Mohit特亞吉的答案跟我的實現,如果你是在欺騙完整的東西:P

相關問題