黑马程序员技术交流社区

标题: 闲的没事变了个小程序,结果悲剧了,求教 [打印本页]

作者: 刘建龙    时间: 2012-6-15 22:14
标题: 闲的没事变了个小程序,结果悲剧了,求教
本帖最后由 刘建龙 于 2012-6-20 14:10 编辑

import java.util.Scanner;
public class _121212
{
        public static void main(String[] args)
        {               
               
                        judge("你是美女吧?是/否","别这么自恋吧!","别这么没自信吧!","你的输入有误。。。");
                                
        }
        public static void judge(String a,String b,String c,String d)
        {
                        Scanner sc = new Scanner(System.in);
                        System.out.println(a);
                        String ss=sc.nextLine();
                        if (ss=="是")
                        {
                                System.out.println(b);
                        }
                        else if (ss=="否")
                        {
                                System.out.println(c);
                        }
                        else
                        {
                                System.out.println(d);
                        }
        }
}

本意识答:是,输出一段字符串;否,输出另一端字符串。但是结果是不能输出对应的字符串。一直都是:你的输入有误。。。但是改为输入int类型后比如0代替是,1代替否,就可以了!难道字符串还有隐藏的字符码?
作者: 薄炳鑫    时间: 2012-6-15 22:28
这事正确的代码,解释见注释部分。
  1. import java.util.Scanner;
  2. public class Test
  3. {
  4.         public static void main(String[] args)
  5.         {               
  6.                
  7.                         judge("你是美女吧?是/否","别这么自恋吧!","别这么没自信吧!","你的输入有误。。。");
  8.                                 
  9.         }
  10.         public static void judge(String a,String b,String c,String d)
  11.         {
  12.                         Scanner sc = new Scanner(System.in);
  13.                         System.out.println(a);
  14.                         String ss=sc.nextLine();
  15.                         if (ss.equals("是"))
  16. //这里你用的是==,但是这个==比较的是内存地址,但是你用“是”将会建立两个不同的对象,将有不同的地址值,所以会输出那个输入有误的信息。应该用equals方法,他比较的是对象的值。
  17.                         {
  18.                                 System.out.println(b);
  19.                         }
  20.                         else if (ss.equals("否"))
  21.                         {
  22.                                 System.out.println(c);
  23.                         }
  24.                         else
  25.                         {
  26.                                 System.out.println(d);
  27.                         }
  28.         }
  29. }
复制代码

作者: 何旭栋    时间: 2012-6-15 22:29
你的“==”改成equals()就行了,字符比较要用equals()方法,比如if ("是".equals(ss))
作者: 宋建华    时间: 2012-6-15 22:37
比较的方式不对

“==”比较的是对象的内存地址
应该用equals(),比较的是对象的值。
作者: 刘建龙    时间: 2012-6-16 20:22
薄炳鑫 发表于 2012-6-15 22:28
这事正确的代码,解释见注释部分。

恩恩,收到,完全的好使了!谢谢啦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2