Java 新的字符串,所以如何管理这个标题应用程序

Java 新的字符串,所以如何管理这个标题应用程序,java,Java,在阅读了一章中的字符串方法描述之后,我试图解决这个编程练习。给你。 编写一个程序,要求输入用户名,然后将用户名写在显示器上,并在前面加上“Ms.”或“Mr.”,具体取决于用户名是女性还是男性。假设只有女性的名字是 Amy Buffy Cathy Elroy Fred Graham 唯一的男性名字是 Amy Buffy Cathy Elroy Fred Graham 所有其他名称将在没有标题的情况下重复出现。程序继续循环,直到用户点击“回车”,而不首先键入名称 C:\>java Ti

在阅读了一章中的字符串方法描述之后,我试图解决这个编程练习。给你。 编写一个程序,要求输入用户名,然后将用户名写在显示器上,并在前面加上“Ms.”或“Mr.”,具体取决于用户名是女性还是男性。假设只有女性的名字是

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=“埃尔罗伊”、“弗雷德”、“格雷厄姆”
    这是如何编译的?阅读有关数组的内容,我强烈建议您进行分析。我知道,在分析用户给出的所有名称时会出现一些错误。我建议您首先编写一个代码,读取每个名称,然后重新打印。然后,您可以添加男性/女性内容。您应该学习基本概念您应该清楚地了解数组,然后从字符串开始…-)。