Arraylist.indexOf()区分大小写

时间:2016-08-31 10:05:44

标签: java

好的,我已经制作了一个电话簿,其中包含以下内容,

  1. 添加新联系人
  2. 修改联系人的电话
  3. 删除联系人
  4. 按名称搜索
  5. 通过电话搜索
  6. 查看所有联系人
  7. 恢复出厂设置
  8. 退出
  9. 我已经完成了它并且它正常工作,除了一件事。如果名称存储为例如“John”并且用户搜索“john”,则会打印“not found”,因为j没有大写,我怎么能解决这个问题而不会搞错我的代码。

    以下是案例2的代码。

    case 2: {
        System.out.println("Enter the contact name you want to edit");
        temp=s.next();
        int z=name.indexOf(temp);
        if(z!=-1)
        {
            System.out.println("Edit to?");
            temp=s.next();
            name.set(z, temp);
            System.out.println("Name edited to "+temp);
        }
        else
            System.out.println("Name not found");
        break;
    }
    

2 个答案:

答案 0 :(得分:0)

如果您希望所有名称都以大写字母开头,则只能以这种方式存储它们,然后以这种方式打印。以下代码将有所帮助:

capitalize(name);

使用此方法将任何内容存储到数组中,然后要求首先出现case 2: { System.out.println("Enter the contact name you want to edit"); temp=s.next(); int z=name.indexOf(capitalize(temp)); if(z!=-1) { System.out.println("Edit to?"); temp=s.next(); name.set(z, capitalize(temp)); System.out.println("Name edited to "+capitalize(temp)); } else System.out.println("Name not found"); break; }

在你的情况下:

 map {
  case ((id, name), list) => (id, name, list.flatten)
}

这种方法可以让你将所有名字保存在同一个约定中 - 名字以大写字母开头。

答案 1 :(得分:0)

You can do like this. convert it into lowercase
case 2: {
System.out.println("Enter the contact name you want to edit");
temp=s.next();
int z=name.indexOf(temp.toLowerCase());
if(z!=-1)
{
    System.out.println("Edit to?");
    temp=s.next();
    name.set(z, temp);
    System.out.println("Name edited to "+temp);
 }
 else
    System.out.println("Name not found");
 break;
}