作业如下:
编写程序以执行以下操作:
我遇到的主要问题是作业的第二部分;我得到了第一部分,在我得到第二部分之后,我相当确定我可以通过其余部分来管理。
import java.util.*;
public class TestStrings
{
public static void main(String[] args)
{
Scanner key = new Scanner(System.in);
String name;
System.out.print("Enter your name as 'First Middle Last': ");
name = key.nextLine();
}
}
从我收集的内容来看,我需要使用string.split?我不知道该如何解决这个问题,因为我需要检查以确保有三个空间,这些空间并不紧挨着彼此或其他东西,例如" John (三个空格)Doe"。我假设它将成为某种循环来检查名称的输入。
问题22,我不能使用数组或StringTokenizer。我必须使用子字符串方法。
任何帮助将不胜感激。谢谢。 :d
答案 0 :(得分:5)
指向正确的方向以找到名字(因为您无法使用数组):
String firstName = input.substring(0, input.indexOf(" "));
这将为您提供从开始到第一个空格的子字符串。如果你研究indexOf和substring方法,你应该能够从那里开始。
答案 1 :(得分:0)
您可以使用String类的substring和indexOf函数来获取所需的内容。
String#indexOf:获取字符串中String的位置。
String#substring:获取字符串中包含的子字符串。
String s = "Luiggi Mendoza J.";
String x;
while(s.indexOf(" ") > 0) {
x = s.substring(0, s.indexOf(" "));
System.out.println(x);
s = s.substring(s.indexOf(" ") + 1);
}
x = s;
System.out.println(x);
程序输出将是:
Luiggi
Mendoza
J.
答案 2 :(得分:0)
如果您知道如何使用正则表达式,请查看匹配方法。如果不考虑indexOf和substring方法。
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html
答案 3 :(得分:0)
使用while循环连续检查用户是否输入了由3个部分组成的字符串,这些部分通过单个空格字符' '
分隔,然后使用split()
函数验证3个字符串部分。通过使用此处演示的substring()
,您可以单独获取名称:
public static void main ( String [] args )
{
String name = "";
boolean ok = false;
Scanner key = new Scanner( System.in );
while ( !ok )
{
System.out.print( "Enter your name as 'First Middle Last': " );
name = key.nextLine();
try
{
if ( name.split( " " ).length == 3 )
ok = true;
}
catch ( Exception e ){ }
}
if ( ok )
{
String firstName = name.substring(0, name.indexOf(" "));
String middleName = name.substring(firstName.length()+1,
name.lastIndexOf(" "));
String surname = name.substring(middleName.length()+firstName.length()+2,
name.length());
}
}
答案 4 :(得分:0)
这可以使用Pattern / Matcher和regexs。调整外壳时还要防止长度为1的字符串。
private static String properCase(String str) {
return str.substring(0, 1).toUpperCase()
+ (str.length() >= 1 ? str.substring(1).toLowerCase() : "");
}
public static void main(String[] args) {
boolean found = false;
do {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name as 'First Middle Last': ");
Pattern p = Pattern.compile("\\s*(\\w+?)\\s(\\w+?)\\s(\\w+)+\\s*");
Matcher m = p.matcher(scanner.nextLine());
found = m.find();
if (found) {
String first = m.group(1);
String middle = m.group(2);
String last = m.group(3);
String revised = properCase(first) + " " + properCase(middle)
+ " " + properCase(last);
System.out.println(revised);
System.out
.printf("%s %s %s.\n", properCase(last),
properCase(first), middle.substring(0, 1)
.toUpperCase());
}
} while (!found);
}