Java 新的字符串,所以如何管理这个标题应用程序
在阅读了一章中的字符串方法描述之后,我试图解决这个编程练习。给你。 编写一个程序,要求输入用户名,然后将用户名写在显示器上,并在前面加上“Ms.”或“Mr.”,具体取决于用户名是女性还是男性。假设只有女性的名字是Java 新的字符串,所以如何管理这个标题应用程序,java,Java,在阅读了一章中的字符串方法描述之后,我试图解决这个编程练习。给你。 编写一个程序,要求输入用户名,然后将用户名写在显示器上,并在前面加上“Ms.”或“Mr.”,具体取决于用户名是女性还是男性。假设只有女性的名字是 Amy Buffy Cathy Elroy Fred Graham 唯一的男性名字是 Amy Buffy Cathy Elroy Fred Graham 所有其他名称将在没有标题的情况下重复出现。程序继续循环,直到用户点击“回车”,而不首先键入名称 C:\>java Ti
Amy
Buffy
Cathy
Elroy
Fred
Graham
唯一的男性名字是
Amy
Buffy
Cathy
Elroy
Fred
Graham
所有其他名称将在没有标题的情况下重复出现。程序继续循环,直到用户点击“回车”,而不首先键入名称
C:\>java Title
Enter a name:
Amy Johnson
Ms. Amy Johnson
Enter a name:
Fred Smith
Mr. Fred Smith
Enter a name:
Zoltan Jones
Zoltan Jones
Enter a name:
C:\>
这是我的代码,我知道它错了,因为我很困惑
import java.util.Scanner;
class titleApplier {
public static void main(String[] args) {
String name;
String male = {"Elroy" , "Fred " , " Graham"};
String females = {"Amy", "Buffy", "Cathy"};
Scanner scan = new Scanner(System.in);
while(name.hasNext()) {
System.out.println("Enter a name ");
name = scan.nextLine();
if(name.equals(male)) {
System.out.println("Mr " + male);
}
else if (name.equals(females)) {
System.out.println(" Mrs " + females);
}
else {
System.out.println(scan.nextLine());
}
}
}
}
你大部分都在正确的轨道上,干得好 您可以直接在if语句中引用名称,而不是将名称单独存储在字符串中:
if(name.equals("Elroy") || name.equals("Fred") || name.equals("Graham")) {
System.out.println("Mr " + male);
}
另外,由于您提供了名字和姓氏,我认为您不应该使用equals方法进行匹配,而是检查名称是否包含以下名称之一:
if (name.contains("firstName"))
因为这看起来像是家庭作业,所以你自己也可以尝试同样的方法。如果你还有问题,请告诉我。祝你好运 您的程序中有很多错误需要更正。最好尝试一下。我使用了BufferedReader,因为Scanner类在循环中获取多个输入值时会导致一些问题:-
import java.io.*;
import java.util.*;
class MF{
static boolean search(String arr[],String st){
for(int i=0;i<arr.length;i++){
if(arr[i].equalsIgnoreCase(st)==true)
return true;
}
return false;
}
public static void main(String args[])throws IOException{
String male[]={"Elroy","Fred","Graham"};
String fem[]={"Amy","Buffy","Cathy"};
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
while(true){
System.out.println("Enter name:-");
String st=br.readLine();
if(st.equals("")==false){
StringTokenizer str=new StringTokenizer(st);
String tok=str.nextToken();
if(search(male,tok)==true)
System.out.println("Mr."+st);
if(search(fem,tok)==true)
System.out.println("Ms."+st);
}
else
break;
}
System.out.println("Program terminates.");
}
}
import java.io.*;
导入java.util.*;
MF类{
静态布尔搜索(字符串arr[],字符串st){
对于(int i=0;i代码中的一些观察:
男性和女性应该是字符串数组,而不仅仅是单个字符串。(即String[]女性={“Amy”、“Buffy”、“Cathy”};
注意前导和尾随空格。“Fred”和“Graham”永远不会通过比较,除非调用String.trim()
方法
方法hasNext()
未在String类中定义;因此存在编译错误。如果您是在Eclipse等IDE上编写此方法,请阅读获得的错误并解决它们。即使对于初学者来说,这也不难
输入名称后,您的程序会提示用户。如果将代码放在do/while
循环中,而不是放在while
循环中,这可能会更容易。这是一个首选项或过程。此外,通常您希望用户输入与提示显示在同一行,因此请使用System.out.print()
而不是System.out.println()
当你在学习时,你应该总是用非常受控的输入来尝试你的程序。在这种情况下,你应该用一个男性名字和一个女性名字来尝试这个程序,一旦你让这个部分工作起来,那么你应该尝试扩展你的解决方案来处理多个名字
您的代码允许输入一行(以空格分隔的单词)而不是字符串(不带空格的字符数组)。因此,您需要将该行拆分为标记(单词),然后检查第一个标记(名字)或第二个标记(姓氏),并将其与数组中的名称进行比较。否则,等于()
方法将返回false
。这是因为'Elroy Smith'不等于'Elroy'。您可以按照我刚才解释的操作,或者使用其他字符串方法,例如contains()
或startsWith()
您应该将标题附加到输入的名称,而不是字符串数组中的名字。您的程序应该输出“Amy Smith夫人”,而不是输出“Amy Smith夫人””
您的while()
子句没有捕获此要求:“程序将继续循环,直到用户点击“enter”而不首先键入名称。”即使行的长度为零,此方法也将始终返回true。相反,使用输入的字符串,仅当输入的字符串的长度大于零时才循环
为了消除不必要的处理,您可以使用布尔值
变量查看是否找到了名称,以便中断
(退出循环)或继续
(跳到下一次迭代)
这是一个潜在的解决方案(可能不是最有效的,但您很容易遵循):
输出:
Enter a name: Fred Smith
Mr. Fred Smith
Enter a name: Buffy Vampire Slayer
Ms. Buffy Vampire Slayer
Enter a name: Cathy Doe
Ms. Cathy Doe
Enter a name:
Exiting program.
String male=“埃尔罗伊”、“弗雷德”、“格雷厄姆”
这是如何编译的?阅读有关数组的内容,我强烈建议您进行分析。我知道,在分析用户给出的所有名称时会出现一些错误。我建议您首先编写一个代码,读取每个名称,然后重新打印。然后,您可以添加男性/女性内容。您应该学习基本概念您应该清楚地了解数组,然后从字符串开始…-)。