P65:T4   -----------哪位大神帮忙解决一下
------------------------------------------------------User类
public class User {
String userName;
String userPwd;
String userType; User() {
} User(String userName, String userPwd) {
this.userName = userName;
this.userPwd = userPwd;
} boolean login(User u) {
boolean b = false;
if (u.userName == "admin" && u.userPwd == "123456") {
u.userType = "administrator";
b = true;
System.out.println(u.userType);
} else if (u.userName == "guest" && u.userPwd == "guest") {
u.userType = "user";
System.out.println(u.userType);
}
return b;
}}
-----------------------------------------------------Test类
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String name=sc.nextLine();
System.out.println("请输入密码:");
String pwd=sc.nextLine();
User _user=new User(name,pwd);
boolean l=new User().login(_user);

if(l==true){
System.out.println("登录成功。");

}else{
System.out.println("登录失败。");
} }
}
------------------------------------不管输对的或错的:java里面返回的始终是false
------------------------------------ (User类)同样的代码在C#里面是正常的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
    class User
    {
        public string userName;
        public string userPwd;
        public string userType;        public User()
        {
        }        public User(string userName, string userPwd)
        {
            this.userName = userName;
            this.userPwd = userPwd;
        }       public bool login(User u) {
  bool b = false;
if (u.userName == "admin" && u.userPwd == "123456") {
u.userType = "administrator";
b = true;
Console.Write(u.userType);
} else if (u.userName == "guest" && u.userPwd == "guest") {
u.userType = "user";
            Console.Write(u.userType);
}
return b;
}    }
}
--------------------------------------------------------------Program类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("name:");
            string name = Console.ReadLine();
            Console.WriteLine("pwd:");
            string pwd = Console.ReadLine();
            User _user = new User(name,pwd);
            bool l = new User().login(_user);
            if(l==true)
            {
                Console.WriteLine("成功");
            }
            else
            {
                Console.WriteLine("失败");
            }
            
        }
    }
}

解决方案 »

  1.   

    if(l==true){ // 这里就没法编译通过
      

  2.   

    不好意思,原来那个是 l 不是1if (u.userName == "admin" && u.userPwd == "123456") {
    错误出现在这里,Java里字符串比较是使用equals方法,而不是 ==改成
    if ("admin".equals(u.userName ) && "123456".equals(u.userPwd)) {
      

  3.   

    调试了十来分钟,感觉程序进不了这里面
    if (u.userName == "admin" && u.userPwd == "123456")
     {
     System.out.println("hello");
     
     u.userType = "administrator";
     b = true;
     System.out.println(u.userType);
     } 正如2楼的
      

  4.   

    楼上正解  C# 字符串可以用== 来比较 java就不行,要用equals
      

  5.   


    java语言中 比较String类型,用 equals()方法哦!
    本程序中 if (u.userName == "admin" && u.userPwd == "123456")
    改成 if (u.userName.equals("admin") && u.userPwd.equals("123456"))thank you in advance for your reward points.