java,字符串比较问题,相同的字符串,却得出false的比较结果

问题描述

java,字符串比较问题,相同的字符串,却得出false的比较结果

下面贴代码,一个是server,一个是client

client:

package testClient;
import java.net.Socket;
import java.util.*;
import java.io.*;

public class Client {

public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    String str=null;
    Socket client=new Socket("localhost",8819);
    Scanner scan=new Scanner(client.getInputStream());
    PrintWriter p=new PrintWriter(client.getOutputStream(),true);
    Scanner scan2=new Scanner(new InputStreamReader(System.in));
    scan2.useDelimiter("
");
    System.out.println("请输入要发送给服务端的字符串");
    if(scan2.hasNext()) str=scan2.next().toString();
    p.println(str);
    client.shutdownOutput();
    while(!scan.hasNext());
    System.out.println(scan.next().toString());     

}

}

下面是server:

package testServer;
import java.net.*;
import java.util.*;
import java.io.*;

public class server {

public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    String str=null;
    ServerSocket s=new ServerSocket(8819);

    System.out.println("已就绪,等待连接");
    Scanner scan=new Scanner(new InputStreamReader(System.in));

    Socket c=s.accept();
    System.out.println("已连接上");
    Scanner scan2=new Scanner(c.getInputStream());
    scan2.useDelimiter("
");
    str=scan2.next();
    if(str.equals(" hello world")) 

    {
        PrintWriter w=new PrintWriter(c.getOutputStream());
        w.println("已收到");
        c.shutdownOutput();
    }else
    {
        System.out.println("收到的字符串不正确");
        System.out.println(str);
    }
    c.close();

}

}

下面贴张输出结果的图:

请问是怎么回事?输出的字符串已说明接收到的str就是“hello world",但是str.equals("hello world")的结果却为false,请问这是怎么回事?

解决方案

兄弟,你debug看一下就知道了,客户端用Scanner输入的字符串是带有换行符的,看下图,服务端截图

解决方案二:

Java中字符串比较
Java中字符串的比较
字符串比较问题(java)

解决方案三:

if(str.equals(" hello world"))多些了个空格吧

解决方案四:

很可能是多了个空格的原因

解决方案五:

是不是输入的时候打空格了,建议把hello word之间的空格去掉试一下。还有就是,建议equals语句的时候尽量把字符串放前面,变量放后面。因为str可能有null值得情况。

解决方案六:

努力。。。。。。。。。

解决方案七:

你没发现你的server类匹配语句有个空格吗?

  if(str.equals(" hello world")) 

把hello前面的空格去掉

时间: 2024-11-29 10:01:45

java,字符串比较问题,相同的字符串,却得出false的比较结果的相关文章

JAVA经典实例--连接字符串

字符串 问题:将一些字符串连接起来 解决之道: 三种方法: 1.直接用+号连接,编译器将构造一个StringBuffer对象,并调用其append方法 2.自己构造StringBuffer对象,有append()方法将返回对StringBuffer对象本身的引用. 3.通过toString方法 代码: /** * StringBufferDemo: 用三种方式构造同样的字符串 */ public class StringBufferDemo { public static void main(S

java字符串-java 求n个长度的字符串取出m个长度的组合

问题描述 java 求n个长度的字符串取出m个长度的组合 java 求n个长度的字符串取出m个长度的组合 求高手指点!!!!!多谢

中文字符串显示乱码-java前端jquery接接收中文字符串乱码问题

问题描述 java前端jquery接接收中文字符串乱码问题 服务端:@RequestMapping(value="/detail/modSelect", method = {RequestMethod.POST}) public @ResponseBody String mod(@RequestBody String reqParam){ //修改请求处理 System.out.println("修改请求发送到此"); System.out.println(reqP

java中需要统计子串在字符串中出现多少次。 麻烦大家帮我详细解释一下那串代码是什么意思。谢谢了!

问题描述 java中需要统计子串在字符串中出现多少次. 麻烦大家帮我详细解释一下那串代码是什么意思.谢谢了! String str="abcjavadefjavadddjava"; String newStr="java"; int count=0; int i=0;//出现的下标 while(str.indexOf(newStr,i)>=0 && i<=str.length()){ count++; i = str.indexOf(ne

在Java web应用中,处理字符串是用stringbuffer还是stringbuilder

问题描述 在Java web应用中,处理字符串是用stringbuffer还是stringbuilder 两者之间的差别就在于线程安全的问题上.一直都搞不明白,在web应用中多次请求同一个方法,需不需要考虑线程安全问题. 在这种情况下,是需要使用哪一个.是不是还应该分局部变量和全局变量来说. 刚接触这个,求大神们解答,实在搞混了 解决方案 StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer 中的方法大都采用了 synchronize

java json字符串解析,获取json字符串中数组的值

问题描述 java json字符串解析,获取json字符串中数组的值 {"arr":["ipAddr","installationSite","imineSystemId","valid"],"login":0,"password":"","purview":"","userId":0,&

java web-怎样把一些字符串拼成一个大字符串

问题描述 怎样把一些字符串拼成一个大字符串 当数据库表B的ID_RECEIVEID等于表A的ID_RECEIVEID时, 如何将数据库B表中除ID_RECEIVEID外的所有字段保存到数据库A表的AUTHDESC字段中].用Java编写 表现形式:区域:XX:海洋:XX:....... 注:XX是表B对应字段查询出来的值 表A: 表B: 解决方案 先把B中的字段名和数据调出来,然后再添加到A好了 解决方案二: 直接在数据库里面用sql语句得到结果集比较好 这样如果以后你的业务逻辑有变化 不需要升

java基础-JAVA equals方法被调用时字符串和对象的顺序

问题描述 JAVA equals方法被调用时字符串和对象的顺序 如图所示 equals方法中对象在前还是字符串在前? 是标准还是建议? 解决方案 一般建议是字符串在前,这样能够避免当你的对象为[null] 的时候,报空指针异常. 解决方案二: 字符串在前,避免当你的对象为[null] 的时候,报空指针异常

Java Web程序实现返回JSON字符串的方法总结_java

基础铺垫在java中,关于json的lib有很多,比如jackjson.fastjson.gson等等,本人都用过,但是对于我等只需要让java对象返回json字符串即可的程序员来说,还是显得过于繁重.而且有些功能定制性很差,比如一个java对象的属性为空时,这些组件都不会输出,于是本人在页面循环遍历列表对象时,总是得判断此属性是否为undefined,这一点让本人很不满意.所以决定花点时间研究下到底是怎么回事. 但经过一上午的细看,发现不管是fastjson还是gson都代码都写得相当的复杂,

java查找字符串中的包含子字符串的个数实现代码_java

1. 用indexof的方法: public class Test11 { private static int counter = 0; /** * @param args */ public static void main(String[] args) { String str ="sdSS**&HGJhadHCASch& ^^"; int i = stringNumbers(str); System.out.println(i); } public static