编写一个应用程序,提示用户输入全名和街道地址,并根据用户的姓名首字母和数字部分构建ID。例如,住在34 Elm的用户William Henry Harrison将拥有WHH34的ID,而住在1778 Monroe的用户Addison Mitchell将拥有AM1778的ID。将文件另存为ConstructID.java。
到目前为止,我的老师说错了......
import java.util.*;
public class ConstructID {
public static void main(String[] args) {
String name1, address1, address2;
Scanner kevs = new Scanner(System.in);
System.out.println("Enter your fullname. Encluding Middle Initial, Separated by spaces.");
name1 = kevs.next();
name2 = kevs.next();
name3 = kevs.next();
name1 = name1.toUpperCase();
name2 = name2.toUpperCase();
name3 = name3.toUpperCase();
name1 = name1.substring(0,1);
name2 = name2.substring(0,1);
name3 = name3.substring(0,1);
System.out.println("\nEnter your address. Separated by spaces.");
address1 = kevs.next();
address2 = kevs.nextLine();
do {
if (address1 == address1.substring(0,1) || address1 == address1.substring(0,2) || address1 == address1.substring(0,3) || address1 == address1.substring(0,4) || address1 == address1.substring(0,5) || address1 == address1.substring(0,6))
System.out.println("\nYour ID: " + name1 + name2 + name3 + address1);
} while (address1 == address2);
}
}
注意:我不能使用数组 :(这个问题的主题是关于循环和字符串..没有数组..所以请帮助.. :((
答案 0 :(得分:1)
如果您不能使用数组,请使用列表。查看java.util.List
的{{3}},了解列表可以执行的操作。 (或者你讲课笔记!)
我希望您的老师说你所写的内容错误的原因在于假设 每个人的名称由名字,中间名和姓氏。我相信你知道这不对。有些人有很多中间名,或根本没有。实际上,有些人只有一个名字。
您的老师想要的是能够处理任意个名称的代码。对于那个阵列来说,这是一个糟糕的选择...因为你需要预测在之前使用来从用户那里读取名称的大小。
答案 1 :(得分:0)
String name1, address1;
Scanner kevs = new Scanner(System.in);
System.out.println("Enter your fullname. Encluding Middle Initial, Separated by spaces.\n");
name1 = kevs.nextLine();
name1 = name1.toUpperCase();
StringTokenizer tokens = new StringTokenizer(name1);
String name = "";
while(tokens.hasMoreTokens()) {
String value= tokens.nextToken();
name += value.substring(0,1);
}
System.out.println("\nEnter your full address. Separated by spaces.\n");
address1 = kevs.nextLine();
address1 = address1.toUpperCase();
StringTokenizer tokens2 = new StringTokenizer(address1);
Integer numericAddress = null;
while(tokens2.hasMoreTokens()) {
String value1= tokens2.nextToken();
try {
numericAddress = Integer.valueOf(value1);
}catch(NumberFormatException ne) {
continue;
}
break;
}
String output = name+numericAddress.toString();
System.out.println(output);
答案 2 :(得分:-1)
public static void main(String[] args) {
String name, address;
Scanner kevs = new Scanner(System.in);
System.out.println("Enter your fullname. Including Middle Initial, Separated by spaces.");
//get the full name
name = kevs.nextLine();
System.out.println("\nEnter your address. Separated by spaces.");
//get the address
address = kevs.nextLine();
String initials = "";
//get the first letter of the name and add it to our initial string
char c = name.charAt(0);
initials += c;
for (int i = 0; i < name.length(); i++) {
char letter = name.charAt(i);
// if we find a space, select the first letter after it until the end
if (letter == ' ') {
initials += name.charAt(i + 1);
}
}
String addressNum = "";
//this bool is so that we only select characters up to the first space
boolean finished = false;
for (int i = 0; i < address.length(); i++) {
if (!finished) {
char num = address.charAt(i);
if (num != ' ') {
//add characters to the address string until there is a space
addressNum += num;
} else // we found the first space so we are now finished
{
finished = true;
}
} else //we are finished so leave the loop
{
break;
}
}
//concatenate the strings
System.out.println(initials + addressNum);
}