首页 > 解决方案 > 如何将字符串与另一个字符串进行比较并获取索引?

问题描述

在此处输入图像描述

?

无法将我从键盘输入的字符串与字符串数组进行比较,我必须并且只必须声明我想要的字符串,如 String c = "abc" 以检查它是否在我有或没有的数组中,就像我无法扫描那样abc 从键盘然后尝试检查它是否在数组中

import java.io.File;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.Scanner;

public class Funn {
    public static void main(String[] args)throws Exception {
        int x,q = 0,w=0,i1,j1;
        String [][] a= {{"c"},{"gfg"},{"aa"},{"q"}};
        String b = null;
        Scanner input=new Scanner(System.in);
        String c= "aa";
        System.out.println(c);

        for (int i = 0 ; i < a.length; i++)
            for(int j = 0 ; j < a[i].length; j++)
            {
                 if ( a[i][j] == c)
                 {
                      i1=i;
                      j1=j;
                      System.out.println(i1);
                      System.out.println(j1);
                      break;
                 }
            }
    }}

标签: java

解决方案


也许您应该使用boolean equals(Object)that 来比较它们的内容,而不是使用==that 检查它们是否完全相同。

由于Array 中的String c"aa"都指向常量池中的同一个对象,所以它们对于 operator 是一样的==

我写了一个简单的程序,可以帮助你理解:

    public static void main(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        String input=scanner.next();//Please input "aa"
        String a="aa",c="aa";
        String b=new String("aa");//you can replace "aa" with a or c if you like
        System.out.println(a==c);//true
        System.out.println(a==b);//false
        System.out.println(a==input);//false
        System.out.println(a.equals(c));//true
        System.out.println(a.equals(b));//true
        System.out.println(a.equals(input));//true
    }

推荐阅读