gpt4 book ai didi

java - Java 子字符串方法的问题

转载 作者:行者123 更新时间:2023-12-01 16:53:44 25 4
gpt4 key购买 nike

我编写了一个程序,提示用户输入他/她的全名 First 、 middle 、 Last 。我尝试使用 substring 方法通过定位字符串中的每个空格将该名称分解为三个单独的部分。找到每个空格后,名称的以下部分将存储在新的字符串变量中。

我遇到的问题是中间名同时存储了中间名和最后一个,因为计数器没有正确停止,正如您在下面的代码中看到的那样,所以我的问题是如何解决这个问题。

请注意,我不想分割字符串,我不想使用 StringTokenizer,我不想使用数组,我已经知道如何做到这一点。我需要知道的是如何修复我的计数器,我想做的将以这种方式工作,我不是在寻找新的方法来做到这一点;我只使用 substring 和 charAt。

import java.util.Scanner;

public class Example
{
public static void main(String[] args)
{
String name = "",
firstName = "",
middleName = "",
lastName = "";

Scanner in = new Scanner(System.in);

System.out.print("Please enter your name 'First Middle Last': ");
name = in.nextLine();



int i = 0;

while(i < name.length())
{
if(name.charAt(i) == ' ')
{
firstName = name.substring(0, i); // Starts at 0 ends at first occurence of ' '

/* middleName = name.substring(i + 1, i); Should start at i + 1,
or one postion after the previously located white space and
then end at the next occurence of ' '

^ The above does not work, and this is where the issue is
happening, how ever if I do the following */

middleName = name.substring(i + 1, name.length());

/* This does work but because the endIndex is name.length() it
runs the length of name and grabs both the middle and last name.*/
i = name.length();


}
++i;
}



System.out.print("\nDisplayed with last name first: " + "\nLast Name: " + lastName + "\nFisrt Name: " + firstName + "\nMiddle Name: " + middleName);

}

}

产生的输出如下所示

Please enter your name 'First Middle Last': First Middle Last

Displayed with last name first:
Last Name:
First Name: First
Middle Name: Middle Last

如您所见,第一个名称显示正确。中间名不是因为它包含“Last”而不仅仅是“middle”

最佳答案

您可以使用indexOf(' ')lastIndexOf(' ')来查找第一个空格和最后一个空格

  • 第一个空格之前的所有内容都是名字
  • 最后一个空格之后的所有内容都是姓氏
  • 中间的其余部分是中间名

伪代码:

firstName = name.substring(0, name.indexOf(' '));
middleName = name.substring(name.indexOf(' ') + 1, name.lastIndexOf(' '));
lastName = name.substring(name.lastIndexOf(' ') + 1);

关于java - Java 子字符串方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35673851/

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