关于字符串比较的问题,明明一致的内容,但比较结果却是false

热爱生活 2016-08-01 09:13:23

遇到了一个难度很大的问题!
关于字符串比较的问题,明明一致的内容,但比较结果却是false

String name="系统升级了";
String aa=section.getName();//aa=系统升级了";
怎么回事?
但是二者的 offset 和hashCode 不一样
aa 的 offset=2 hashCode=0

name offset=0 hashCode=472377986
这是我跟踪后获得的值。。。

//调试发现
aa.equals(name) =false
谁知道怎么办?
怎么让aa.equals(name)=true ?
真是很奇芭的问题 我自己也很郁闷 不知道咋整!请高手指教 非常感谢!
...全文
962 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
热爱生活 2016-08-03
  • 打赏
  • 举报
回复
 String ss=section.getName();
	            ss=ss.trim();
	            ss=ss.toString();
	             String aa;
	            aa=ss.valueOf(ss);
	            name=name.trim();
	            name=name.toString();
	            String bb;
	            bb=name.valueOf(name);
	            int aaa=aa.length();
	            int bbb=bb.length();
	            boolean a_t= aa.contains(bb.subSequence(0, bb.length()));
		        boolean b_t=bb.contains(aa.subSequence(0, aa.length()));		            		       
		        if((b_t||a_t)&&(aa.length()==bb.length()))
		       {
		            return section;
		        }
最后用这个方法解决的。。
dusmit 2016-08-03
  • 打赏
  • 举报
回复
百年难遇
StatFs 2016-08-02
  • 打赏
  • 举报
回复
=还是==?
秃头地中海 2016-08-02
  • 打赏
  • 举报
回复
同楼上所问.
moonFY 2016-08-02
  • 打赏
  • 举报
回复
引用 2 楼 ateng5921 的回复:
[quote=引用 1 楼 chenjj2048 的回复:] 这是不可能发生的事,一定是你那里其他地方出错了
这是调试发现的真事 肯定没有问题的。。。[/quote] 那你调试的时候就没有去看一下两变量的值吗
ink_s 2016-08-02
  • 打赏
  • 举报
回复
打印下长度看一样长不?
热爱生活 2016-08-02
  • 打赏
  • 举报
回复

调试两个变量值一致的!都是 “系统升级了”
长度也一致!就是比较的时候 不同。。。
下面是代码:
for (IniSection section : getSections())
/* */ {
String ss=section.getName();
ss=ss.trim();
ss=ss.toString();
section2=section;
//ss.offsetByCodePoints(0, 0);
String aa;
aa=ss.valueOf(ss);
name=name.trim();
name=name.toString();
String bb;
bb=name.valueOf(name);
int aaa=aa.length();//aaa=5
int bbb=bb.length();//bbb=5
if(aa.length()==bb.length())//成立
{
CharSequence cc;
cc=aa.subSequence(0, aa.length());
CharSequence dd;
dd=bb.subSequence(0, bb.length());
if(cc.equals(bb))//不成立
{
return section;
}

}
/* 491 */ if (aa.equals(bb)) {//不成立
/* 492 */ return section;
/* */ }
/* */ }

两个字符串的调试内容截图如下:


我从发现字符串值多个空格好像!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

我调试结果如上 我是真的遇到了这样的问题 特大难题百年一遇 !
咋整!我真是不知道了。。。。请大家帮忙 非常感谢!!

引用 8 楼 SongAla 的回复:
=还是==?


引用 8 楼 SongAla 的回复:
=还是==?
征途龙 2016-08-01
  • 打赏
  • 举报
回复
一般这种情况需要.trim()一下
网络咖啡 2016-08-01
  • 打赏
  • 举报
回复
aa.equals(name) ==false ?
热爱生活 2016-08-01
  • 打赏
  • 举报
回复
引用 1 楼 chenjj2048 的回复:
这是不可能发生的事,一定是你那里其他地方出错了
这是调试发现的真事 肯定没有问题的。。。
chenjj2048 2016-08-01
  • 打赏
  • 举报
回复
这是不可能发生的事,一定是你那里其他地方出错了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧