黑马程序员技术交流社区

标题: 登录系统. [打印本页]

作者: L番茄X    时间: 2015-5-28 16:33
标题: 登录系统.
//控制台登录.倒包.
import java.util.Scanner;
class Demo
{
  public static void main(String[]args)
{
   //定义登录的密码还有名字.
  String Uname = "hellokitty";
  String Upwb = "26624";
//系统给出了三次登录的机会.
int count = 3 ;
  while(true){
     //控制台输入.
  Scanner sc = new Scanner(System.in);
   //提示输入;
  System.out.println("请输入登录的名字:");
   //接收登录的名字.
  String Youname = sc.next();
  System.out.println("请输入登录密码:");
    String Youpwb = sc.next();
    //判断是否与系统的一样.
  if(Youname.equals(Uname)&& Youpwb.equals(Upwb)){
        //如果一样那就登录成功.
     System.out.println("登录成功!");
    break;
}else{
    count--;
    System.out.println("登录的名字或者密码错误,你还有"+count+"次机会");
   break;
    }
   }
  }
}   



作者: 曲终烟尽    时间: 2015-5-28 17:06
你的代码有问题。不知道你自己测试没。只能写错一次帐号密码,之后就没反应了,因为你break跳出了while循环,应该在while里加入条件 while(count>0)我把你的代码改一下你看一看:
  1. //控制台登录.倒包.
  2. import java.util.Scanner;
  3. class Test
  4. {
  5.           public static void main(String[]args)
  6.         {
  7.                    //定义登录的密码还有名字.
  8.                   String Uname = "hellokitty";
  9.                   String Upwb = "26624";
  10.                   //系统给出了三次登录的机会.
  11.                   int count = 3 ;
  12.                   while(count>0)
  13.                   {
  14.                              //控制台输入.
  15.                           Scanner sc = new Scanner(System.in);
  16.                            //提示输入;
  17.                           System.out.println("请输入登录的名字:");
  18.                            //接收登录的名字.
  19.                           String Youname = sc.next();
  20.                           System.out.println("请输入登录密码:");
  21.                           String Youpwb = sc.next();
  22.                             //判断是否与系统的一样.
  23.                           if(Youname.equals(Uname)&& Youpwb.equals(Upwb))
  24.                           {
  25.                                 //如果一样那就登录成功.
  26.                                   System.out.println("登录成功!");
  27.                                   break;
  28.                           }
  29.                           else
  30.                           {
  31.                                   count--;
  32.                                   if(count==0)
  33.                                   {
  34.                                           System.out.println("登录失败!");
  35.                                           break;
  36.                                   }
  37.                                   System.out.println("登录的名字或者密码错误,你还有"+count+"次机会");
  38.                           
  39.                           }
  40.                    }
  41.                   
  42.           }
  43. }
复制代码




作者: 曲终烟尽    时间: 2015-5-28 17:08
本帖最后由 曲终烟尽 于 2015-5-28 17:10 编辑

修改了两处,一个是while(count>0)
一个是
else语句里的 登录失败判断。
如果不要这个判断就还会输出一次
”还有0次机会“   这句不合时宜的话。。。
你也可以用for循环,更安全一些,while容易陷入死循环。
for(int i=0;i<count;i++){
你的代码.
}

for(int i=0;i<3;i++){}

作者: lizhi    时间: 2015-5-28 17:47
你这代码,只能运行一次,需要判断count而不是while(true)
作者: L番茄X    时间: 2015-5-28 19:04
曲终烟尽 发表于 2015-5-28 17:06
你的代码有问题。不知道你自己测试没。只能写错一次帐号密码,之后就没反应了,因为你break跳出了while循环 ...

是.我漏了判断count了.
作者: 465096445@qq.co    时间: 2015-5-28 21:01
我大黑马就是牛逼。




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