2 mr fei Mr_Fei 于 2017.07.27 10:08 提问

参数传值、后台取不到值
c#
static void Main(string[] args)
    {
        Bank bank = new Bank();
        bank.Create();
    }
    public class User {
        public string Name;//定义姓名
        public string PassWord;//定义密码
        public string IdentityNum;//定义身份证
        public double balance;//定义存款余额
        public string Account;//定义帐号
        public double yue;//定义余额
        public double qujin;//定义取款金额
    }
    public class Bank {
        public void CreateAccount() {
            User user = new User();
            Console.WriteLine("请输入账户姓名:");
            user.Name = Console.ReadLine();
            user.Account = "179708064356";
            Console.WriteLine("请输入账户密码");
            user.PassWord = Console.ReadLine();
            Console.WriteLine("请输入账户身份证号码:");
            user.IdentityNum = Console.ReadLine();
            Console.WriteLine("请输入存款金额:");
            user.balance = double.Parse(Console.ReadLine());
            Console.WriteLine("账户信息:{0},姓名:{1},存款金额:{2}   创建成功!", user.Account, user.Name, user.balance);
        }
        public void Create() {
            User user = new User();
            Console.WriteLine("请输入账户姓名:");
            user.Name = Console.ReadLine();
            if (user.Name == "179708064356")
            {
                Console.WriteLine("请输入账户密码:");
                user.PassWord = Console.ReadLine();
                if (user.PassWord == "1234")
                {
                    Bank bank = new Bank();
                    bank.CreateAccount();
                    Console.WriteLine("请输入取款金额:");
                    user.qujin = double.Parse(Console.ReadLine());
                    if (user.qujin > 0)
                    {
                        if (user.qujin < user.balance)
                        {
                            user.yue = user.balance - user.qujin;
                            Console.WriteLine("取款成功! 当前余额:{0}", user.yue);
                        }
                        else
                        {
                            Console.WriteLine("您的余额不足!");
                        }
                    }
                    else
                    {
                        Console.WriteLine("您输入的金额小于0元!");
                    }
                }
                else
                {
                    Console.WriteLine("密码卟正确!");
                }
            }
            else
            {
                Console.WriteLine("账户卟正确!");
            }
        }
    } 


            其中user.balance取卟到值、求大神!!!

11个回答

qq_35473951
qq_35473951   2017.07.27 10:16

你这是C语言吗?user.balance取不到值是什么意思/是为空吗

onlyjavatrue
onlyjavatrue 回复Mr_Fei: 是的
3 个月之前 回复
Mr_Fei
Mr_Fei 这是C#
3 个月之前 回复
qq_26955209
qq_26955209 没看错的话,这丫的应该是C#
3 个月之前 回复
Mr_Fei
Mr_Fei   2017.07.27 10:27

那个user.balance取到的是0

strutce
strutce   Ds   Rxr 2017.07.27 10:28

CreateAccount方法中的user你是new出来新的对象,跟你的Create方法中的user不是同一个,所以在CreateAccount给balance 设置的值,在Create的user没有,你可以改成 CreateAccount(user) ,你把user传递进去不使用new

Mr_Fei
Mr_Fei   2017.07.27 10:31
 static void Main(string[] args)
    {
        Bank bank = new Bank();
        bank.CreateAccount();
        bank.Create();
    }
    public class User {
        public string Name;//定义姓名
        public string PassWord;//定义密码
        public string IdentityNum;//定义身份证
        public double balance;//定义存款余额
        public string Account;//定义帐号
        public double yue;//定义余额
        public double qujin;//定义取款金额
        public void quxian() {
            if (qujin > 0) {
                if (qujin < balance)
                {
                    yue = balance - qujin;
                    Console.WriteLine("取款成功!  当前余额为:{0}", yue);
                }
                else {
                    Console.WriteLine("您输入的金额错误!");
                }
            }
            else{
                Console.WriteLine("您输入的金额需要大于0");
            }
        }
    }
    public class Bank {
        public void CreateAccount() {
            User user = new User();
            Console.WriteLine("请输入账户姓名:");
            user.Name = Console.ReadLine();
            user.Account = "179708064356";
            Console.WriteLine("请输入账户密码");
            user.PassWord = Console.ReadLine();
            Console.WriteLine("请输入账户身份证号码:");
            user.IdentityNum = Console.ReadLine();
            Console.WriteLine("请输入存款金额:");
            user.balance = double.Parse(Console.ReadLine());
            Console.WriteLine("账户信息:{0},姓名:{1},存款金额:{2}   创建成功!", user.Account, user.Name, user.balance);
        }
        public void Create() {
            User user = new User();
            Console.WriteLine("请输入账户姓名:");
            user.Name = Console.ReadLine();
            if (user.Name == "179708064356")
            {
                Console.WriteLine("请输入账户密码:");
                user.PassWord = Console.ReadLine();
                if (user.PassWord == "1234")
                {
                    Console.WriteLine("请输入取款金额:");
                    user.qujin = double.Parse(Console.ReadLine());
                    user.quxian();
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("密码卟正确!");
                }
            }
            else
            {
                Console.WriteLine("账户卟正确!");
            }
        }
    } 


            源代码是要这样的、但是也取卟到值、取款方法需要在User类里面
Mr_Fei
Mr_Fei   2017.07.27 10:34
  public void quxian() {
            if (qujin > 0) {
                if (qujin < balance)
                {
                    yue = balance - qujin;
                    Console.WriteLine("取款成功!  当前余额为:{0}", yue);
                }
                else {
                    Console.WriteLine("您输入的金额错误!");
                }
            }
            else{
                Console.WriteLine("您输入的金额需要大于0");
            }


                            那个qujin已经娶到值了、是大于0、然后下面那个if里面的qujin是有值的、balance没有值是0
Mr_Fei
Mr_Fei   2017.07.27 10:37

在调试里面给balance赋值10000、取款5000、程序正常走、就是bbalance取卟到值

qq_35473951
qq_35473951   2017.07.27 10:40

你在调用 bank.CreateAccount();方法时new了一个User,又在调用bank.Create();方法时又new了一个User,这两个user不是一个user。
就算你把名字取得一样也不是一个人,是两个不同的user。所以一个user有值,另一个没值,user.balance=0是因为它是double类型的默认值是0,如果改为string类型就是空null。

Mr_Fei
Mr_Fei   2017.07.27 10:43

成功了、知道是那里的原因了、另附上源代码
static void Main(string[] args)
{
Bank bank = new Bank();
bank.CreateAccount();
bank.Create();
}
public class User {
public string Name;//定义姓名
public string PassWord;//定义密码
public string IdentityNum;//定义身份证
public double balance;//定义存款余额
public string Account;//定义帐号
public double yue;//定义余额
public double qujin;//定义取款金额
public void quxian() {
if (qujin > 0) {
if (qujin < balance)
{
yue = balance - qujin;
Console.WriteLine("取款成功! 当前余额为:{0}", yue);
}
else {
Console.WriteLine("您输入的金额错误!");
}
}
else{
Console.WriteLine("您输入的金额需要大于0");
}
}
}
public class Bank {
User user = new User();
public void CreateAccount() {
Console.WriteLine("请输入账户姓名:");
user.Name = Console.ReadLine();
user.Account = "179708064356";
Console.WriteLine("请输入账户密码");
user.PassWord = Console.ReadLine();
Console.WriteLine("请输入账户身份证号码:");
user.IdentityNum = Console.ReadLine();
Console.WriteLine("请输入存款金额:");
user.balance = double.Parse(Console.ReadLine());
Console.WriteLine("账户信息:{0},姓名:{1},存款金额:{2} 创建成功!", user.Account, user.Name, user.balance);
Console.ReadLine();
}
public void Create() {
Console.WriteLine("请输入账户姓名:");
user.Name = Console.ReadLine();
if (user.Name == "179708064356")
{
Console.WriteLine("请输入账户密码:");
user.PassWord = Console.ReadLine();
if (user.PassWord == "1234")
{
Console.WriteLine("请输入取款金额:");
user.qujin = double.Parse(Console.ReadLine());
user.quxian();
Console.ReadLine();
}
else
{
Console.WriteLine("密码卟正确!");
}
}
else
{
Console.WriteLine("账户卟正确!");
}
}
}

Mr_Fei
Mr_Fei   2017.07.27 10:44
static void Main(string[] args)
    {
        Bank bank = new Bank();
        bank.CreateAccount();
        bank.Create();
    }
    public class User {
        public string Name;//定义姓名
        public string PassWord;//定义密码
        public string IdentityNum;//定义身份证
        public double balance;//定义存款余额
        public string Account;//定义帐号
        public double yue;//定义余额
        public double qujin;//定义取款金额
        public void quxian() {
            if (qujin > 0) {
                if (qujin < balance)
                {
                    yue = balance - qujin;
                    Console.WriteLine("取款成功!  当前余额为:{0}", yue);
                }
                else {
                    Console.WriteLine("您输入的金额错误!");
                }
            }
            else{
                Console.WriteLine("您输入的金额需要大于0");
            }
        }
    }
    public class Bank {
        User user = new User();
        public void CreateAccount() {
            Console.WriteLine("请输入账户姓名:");
            user.Name = Console.ReadLine();
            user.Account = "179708064356";
            Console.WriteLine("请输入账户密码");
            user.PassWord = Console.ReadLine();
            Console.WriteLine("请输入账户身份证号码:");
            user.IdentityNum = Console.ReadLine();
            Console.WriteLine("请输入存款金额:");
            user.balance = double.Parse(Console.ReadLine());
            Console.WriteLine("账户信息:{0},姓名:{1},存款金额:{2}   创建成功!", user.Account, user.Name, user.balance);
            Console.ReadLine();
        }
        public void Create() {
            Console.WriteLine("请输入账户姓名:");
            user.Name = Console.ReadLine();
            if (user.Name == "179708064356")
            {
                Console.WriteLine("请输入账户密码:");
                user.PassWord = Console.ReadLine();
                if (user.PassWord == "1234")
                {
                    Console.WriteLine("请输入取款金额:");
                    user.qujin = double.Parse(Console.ReadLine());
                    user.quxian();
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("密码卟正确!");
                }
            }
            else
            {
                Console.WriteLine("账户卟正确!");
            }
        }
    } 

PS谢谢各位基佬、
Mr_Fei
Mr_Fei 回复丵鹰: 一样一样的。
3 个月之前 回复
strutce
strutce 回复霸王横千秋: 回复错人了
3 个月之前 回复
strutce
strutce 回复霸王横千秋: 你折腾这么久根我说的直接把user传递给CreateAccount(user) 有什么区别
3 个月之前 回复
qq_35473951
qq_35473951 不搞基
3 个月之前 回复
mr_qians
mr_qians   2017.08.07 15:47

这个基础问题吧 user.balance你没赋值 默认 double 是0.0的

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片