freedom_wings
freedom_wings
采纳率21.1%
2015-12-28 07:19 阅读 3.1k
已采纳

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("\n");
    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("\n");
    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,请问这是怎么回事?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • 已采纳
    jiaowonange8 男哥 2015-12-28 07:40

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

    点赞 1 评论 复制链接分享
  • lh994749769 為難 2015-12-28 07:35

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

    点赞 评论 复制链接分享
  • Royal_lr Royal_lr 2015-12-28 07:41

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

    点赞 评论 复制链接分享
  • u011665766 江户川小南 2015-12-28 07:42

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

    点赞 评论 复制链接分享
  • yyyy_1 yyyy_1 2015-12-28 07:43

    努力。。。。。。。。。

    点赞 评论 复制链接分享
  • qq_31325033 月苍 2015-12-28 08:01

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

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

    把hello前面的空格去掉

    点赞 评论 复制链接分享

相关推荐