A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘辉 中级黑马   /  2013-3-14 21:13  /  2202 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 樱木花道10 于 2013-3-15 22:18 编辑

public class StringTest {
           public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);            
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        if (username==admin&& password==admin) {
                System.out.println("true");
        } else {
                System.out.println("false");
                 }
        }
}               

点评

如果问题已经解决了,请将分类改为已解决,谢谢  发表于 2013-3-15 08:19

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
admin你都没有定义,编译能通过么?
并且比较字符串的内容是否相等的方法A.equals(B),A不能为基本数据类型!也不能为Null!
"=="比较的对象的地址!在这里比较不合适!
回复 使用道具 举报
把if(username==admin&&password==admin)改为if(username==username&&password==password)
回复 使用道具 举报
package test1_1;

import java.util.Scanner;

public class Test2 {

        public static void main(String[] args)
        {
        Scanner sc = new Scanner(System.in);            
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
            if (username.equals("admin") && password.equals("admin")) {
                        System.out.println("true");}
            else
            {
                    System.out.println("false");
            }

        
}   
两个错误,首先你的admin是字符串,定义时候要加"",这样根本就编译不过去.第二个问题是==比较的是地址值,而你要想比较方法的内容是否相等用的是equals

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
请问你的代码能编译通过吗?我改成这样了,给你作为参考:
  1. public class StringTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Scanner sc = new Scanner(System.in);            
  6.                 System.out.println("请输入用户名:");
  7.                 String username = sc.nextLine();
  8.                 System.out.println("请输入密码:");
  9.                 String password = sc.nextLine();
  10.                 if (username.equals("admin")&& password.equals("admin"))
  11.                 {
  12.                                 System.out.println("true");
  13.                 }
  14.                 else
  15.                 {
  16.                                 System.out.println("false");
  17.                 }
  18.         }
  19. }
复制代码
问题剖析:1,你所比较的admin在上文没有定义,所以并不是变量,而应该是一个字符串常量,字符串常量要用""引起来;
               2,==做字符串判断时,比较的字符串引用是否相同,很明显,username和password并不指向“admin”这个对象,依然返回false;正确的写法应该是利用String的equals方法判断,String的equals方法重写了Object类的equals方法,它比较的是两个字符串变量的字符序列是否相同;如上,你想判断时username和password指向的字符串常量跟“admin”是否字符序列相同,所以得用equals方法进行判断。
回复 使用道具 举报
把if(username==admin&&password==admin)
改为if(username==username&&password==password)
或者改为 if (username.equals("admin")&& password.equals("admin"))

回复 使用道具 举报
额,admin这个都没定义怎么编译通过啊,可以先在前面申明 String admin = "admin",后面用,username.equals(admin) && password.equals(admin) 进行比较,不过切记,字符串的比较不能用 ==
回复 使用道具 举报
首先你得明白哪一行代码出的问题 if (username==admin&& password==admin)
该行代码
第一字符串的比较应该用equals,因为String重写了equals方法
第二你的admin没有加引号
第三通常在开发过程中,会将要比较的字符串放在前面,放在后面容易出现空指针异常
像这样 if ("admin".equals(username)&& "admin".equals(password))
回复 使用道具 举报
name,age是String类型的,调用String特有的比较方法equals 进行比较,
String的equals方法
public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。

覆盖:
类 Object 中的 equals
参数:
anObject - 与此 String 进行比较的对象。
返回:
如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。

public class StringDemo{
    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);            
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
if (username.equals("admin")&& password.equals("admin")) {
         System.out.println("true");
} else {
         System.out.println("false");
          }
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马