java - 如何将字符串与另一个字符串进行比较并获取索引?
问题描述
无法将我从键盘输入的字符串与字符串数组进行比较,我必须并且只必须声明我想要的字符串,如 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;
}
}
}}
解决方案
也许您应该使用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
}
推荐阅读
- apache-spark - Zeppelin Notebook 上默认用户创建 Spark 池
- c# - Elasticsearch.Net.UnexpectedElasticsearchClientException:在从 ES 获取数据期间
- java - 有没有办法在 JPA 存储库的 @Query 注释中使用常量(EnumType Ordinal)值?
- c# - 此请求无权执行此操作。Azure blobClient
- django - Sentry SDK - 如何使用新客户端进行 raven 测试调用?
- c++ - consteval 函数是否允许依赖于函数参数的模板参数?
- git - 如何从我的 sbt 自动增加版本号并上传到 git
- aframe - aframe 截屏会冻结相机
- javascript - JSON 存储在响应变量中的什么位置?
- node.js - 如何设置“pathMatch”和 childRoutingModule 工作的路由?