黑马程序员技术交流社区

标题: 关于继承多态Scanner输入接收输出的问题,代码能运行,结果... [打印本页]

作者: 夏季熬成了秋    时间: 2014-6-11 22:30
标题: 关于继承多态Scanner输入接收输出的问题,代码能运行,结果...
本帖最后由 夏季熬成了秋 于 2014-6-12 20:33 编辑
  1. import java.util.Scanner;
  2. //定义手机通用短信接口
  3. interface Phone {
  4.         void send();
  5. }
  6. //定义苹果手机短信实现方式
  7. class Iphone implements Phone {
  8.         public void send() {
  9.                 System.out.println("苹果手机模式启动,在发送短信...");
  10.         }
  11. }
  12. //定义安卓手机短息实现方式
  13. class AndroidPhone implements Phone {
  14.         public void send() {
  15.                 System.out.println("安卓手机模式启动,在发送短信...");
  16.         }
  17. }
  18. //定义塞班手机短息实现方式
  19. class SabanPhone implements Phone {
  20.         public void send() {
  21.                 System.out.println("塞班手机在发送短信");
  22.         }
  23. }
  24. //定义工厂模式,根据传入的手机类型进行对应处理
  25. class factory {
  26.         public static void show(String type) {
  27.                 if (type.equals("")) {
  28.                         System.out.println("类型输入为空,不予处理,请重新输入");
  29.                         return;
  30.                 }
  31.                 Phone p = null;
  32.                 if (type == "Iphone") {
  33.                         p = new Iphone();
  34.                 } else if (type == "AndroidPhone") {
  35.                         p = new AndroidPhone();
  36.                 } else {
  37.                         p = new SabanPhone();
  38.                 }
  39.                 p.send();

  40.         }
  41. }

  42. public class Test3 {

  43.         public static void main(String[] args) {
  44.                 while (true) {
  45.                         Scanner sc = new Scanner(System.in);
  46.                         String s = sc.nextLine();

  47.                         new factory().show(s);
  48.                 }

  49.         }

  50. }
复制代码

我想说的是我  在控制台 输入  Iphone  为什么给我输出的是  塞班手机在发短信 而不是Iphone呢?求给找下错的地方.
作者: shisishishisi    时间: 2014-6-11 22:46
== 号比较的是对象type和s在内存中的地址值,String类的equals方法比较的才是两个字符串的值是否相等,把==号改成equals就行了
作者: 夏季熬成了秋    时间: 2014-6-11 23:14
shisishishisi 发表于 2014-6-11 22:46
== 号比较的是对象type和s在内存中的地址值,String类的equals方法比较的才是两个字符串的值是否相等,把== ...

额了,幸苦了哈,  瞬间就明白了,.,,,,马虎了 ,嘿嘿,




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