2016-01-23 146 views
0

我試圖創建一個對話框窗口,我問一個人與格式名稱:名字,姓創建對話框窗口

然後我想在一個新的對話框,顯示只是姓名窗口的格式爲:Hello! SURNAME!

這是我到目前爲止的代碼:

import javax.swing.*; 

    public class Surname { 
    public static void main(String[] arg) { 

    String a = JOptionPane.showInputDialog(null, "Write your name: Lastname, surname "); 

    int i, j; 
    i = a.lastIndexOf(???); 
    j = a.indexOf(',' + 1);   

    a = a.substring(i, j); 

    JOptionPane.showMessageDialog(null, "Hello! " + a.toUpperCase()); }} 
+0

你的「子「指標顯然是錯誤的。 'j'應該是字符串的末尾(即'.length')。也許你應該看看['String.split'](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-) – 2016-01-23 11:41:34

回答

2

您可以通過分割字符串中提取姓「」。

例如

String surname = "Novovic, Felix".split(", ")[0]; 

由於我們訪問此數組,它的大小是由用戶的輸入完全確定,即用戶輸入「Novovic,菲利克斯,你好,世界」你應該放心了在訪問數組之前輸入的格式是正確的。

例如,通過檢查數組長度= 2

1

使用split()這會做:

public static void main(String[] args) { 
    String a = JOptionPane.showInputDialog(null, "Write your name: Lastname, surname "); 
    String[] nameParts = a.split(","); 
    JOptionPane.showMessageDialog(null, "Hello! " + nameParts[1].trim().toUpperCase()); 
} 

...但你可能要添加更多的錯誤處理。所以,這只是一個光禿禿的骨頭例如

+0

這產生姓氏,他想要姓氏。 –

+0

@TheCodingWombat確實......沒有爭論這兩者之間的實際區別是什麼(我住在那裏沒有),我會修改答案。 – morido

+0

據我所知除了可能的語義之外沒有區別。我只知道提問者提供給我們什麼細節,他想要逗號後面的信息(他標記爲姓氏)。 –

2

你子是不正確的,爲啓動你需要的逗號的指數,爲結束的字符串的簡單長度:

int i, j; 
i = a.indexOf(',') + 2; 
j = a.length(); 

a = a.substring(i, j); 
+1

這不完全正確。您需要執行'i = a.indexOf(',')+ 2;否則逗號和空格將包含在最終字符串中。 – DonyorM

+0

你是對的,我認爲這個逗號是在原始信息中,這就是爲什麼我沒有注意到它。 –