2016-01-23 100 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

你是对的,我认为这个逗号是在原始信息中,这就是为什么我没有注意到它。 –