gpt4 book ai didi

java - 打印姓氏+名字 - 但它显示错误(Java)

转载 作者:行者123 更新时间:2023-11-29 08:35:28 27 4
gpt4 key购买 nike

所以我制作了一个代码让用户输入他们的名字和姓氏;然后交换两个位置。

例如。 Bulota Babi 成为 Babi, Bulota

这是我的代码

public class trial {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();

String fname = input.substring(0, input.indexOf(0));
String lname = input.substring(1, input.indexOf(input.length()));

System.out.println(lname +","+ fname);
}

}

我不确定它有什么问题,这是错误信息

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1967)
at trial.main(trial.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

最佳答案

最好只使用 String.split

public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();

String arr[] = input.split (" ");
if (arr.length > 1)
System.out.println(arr[1] +","+ arr[0]);
}

使用您的解决方案,它试图找到一个 ascii 值 0 的字符,当然返回 -1 因为它不存在 - 因此您的子字符串是失败

编辑

在下面回答你的评论

         String in = "John Appleseed William";
String arr[] = in.split (" ");
if (arr.length == 2) {
System.out.println(arr[1] + ", " + arr[0]);
}
if (arr.length == 3) {
System.out.println(arr[2] + ", " + arr[0] + " " + arr[1]);
}

关于java - 打印姓氏+名字 - 但它显示错误(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44405296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com