| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1050 人关注过本帖
标题:循环问题,为什么输入字符的时候,会一直循环,我只是想他输入字符的时候生 ...
只看楼主 加入收藏
zhangok001
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2015-7-28
收藏
得分:0 
上次多了两行
2015-08-24 09:21
zhangok001
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2015-7-28
收藏
得分:0 
回复 3楼 实际应用
我的意思是说goto 跳到回头后为什么没停下要求要输入数据,而直接的循环上次输入的错识的提示.
2015-08-24 09:21
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 4楼 TonyDeng
程序代码:
public class RegisterDemo
{
    public RegisterDemo()
    {
        Register1 frame=new Register1();
        frame.setTitle("登录系统");
        frame.setVisible(true);
    }
    public static void main(String[] args)
    {
        new RegisterDemo();
    }
}
class Register extends JFrame
{
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 1L;
    JLabel lblName,lblPassword;
    JTextField txtName;
    JPasswordField txtPass;
    JButton btnOk,btnExit;
    public Register1()
    {
        lblName=new JLabel("用户名");
        lblPassword=new JLabel("密码");
        txtName=new JTextField(20);
        txtPass=new JPasswordField(20);
        btnOk=new JButton("登录");
        btnExit=new JButton("退出");
        Box bv1=Box.createVerticalBox();
        bv1.add(lblName);
        bv1.add(Box.createRigidArea(new Dimension(8,8)));
        bv1.add(lblPassword);
        bv1.add(Box.createRigidArea(new Dimension(8,8)));
        Box bv2=Box.createVerticalBox();
        bv2.add(txtName);
        bv2.add(Box.createRigidArea(new Dimension(8,8)));
        bv2.add(txtPass);
        bv2.add(Box.createRigidArea(new Dimension(8,8)));
        Box bh=Box.createHorizontalBox();
        bh.add(bv1);
        bh.add(bv2);
        Box box=Box.createVerticalBox();
        box.add(bh);
        JPanel panel=new JPanel();
        panel.add(btnOk);
        panel.add(btnExit);
        box.add(panel);
        this.setLayout(new FlowLayout());
        this.add(box);
        this.setSize(300,140);
        this.setLocation(400,400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        btnOk.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                String name=txtName.getText().trim();
                String pass=new String(txtPass.getPassword());
                if(name.equals("林月儿"))
                {
                    if(!pass.trim().equals("123"))
                    {
                        JOptionPane.showMessageDialog(null,"密码不正确!","警告!",JOptionPane.WARNING_MESSAGE);
                    }
                    else if(pass.trim().equals("123"))
                    {
                        String data="用户名:"+name+"\n";
                        data+="密码:"+pass.trim()+"\n";
                        JOptionPane.showMessageDialog(null, "登录成功!请核对:\n"+data,"提示",JOptionPane.INFORMATION_MESSAGE);
                    }
                }
                else
                {
                    JOptionPane.showMessageDialog(null,"该用户不存在!","警告!",JOptionPane.WARNING_MESSAGE);
                }
            }
        });
        btnExit.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
    }
}

剑栈风樯各苦辛,别时冰雪到时春
2015-08-24 19:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 13楼 林月儿
嘻嘻,C#也来了。

授人以渔,不授人以鱼。
2015-08-25 10:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
#include <cstdio>
#include <cstring>
#include <conio.h>

const short K_ENTER = 0x0d;

const char* Correct_Password = "1a2b3c";
const size_t Max_Password_Length = 10;

const char* Get_Password(char* str)
{
    size_t index = 0;

    printf_s("請輸入密碼: ");
    while (index < Max_Password_Length)
    {
        int ch = _getch();
        if (ch == K_ENTER)
        {
            break;
        }
        str[index++] = ch;
        putchar('*');
    }
    str[index] = '\0';

    putchar('\n');

    return str;
}

int main(void)
{
    char password[Max_Password_Length + 1];
    size_t count = 0;

    while (count++ < 2)
    {
        printf_s("您輸入的密碼是: %s\n", Get_Password(password));
        if (strcmp(password, Correct_Password) == 0)
        {
            printf_s("密碼正確!\n");
        }
    }

    printf_s("按任意鍵結束程序...");
    _getch();
    return 0;
}

授人以渔,不授人以鱼。
2015-08-25 10:54
zhangok001
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2015-7-28
收藏
得分:0 
我的意思是说goto 跳到回头后为什么没停下要求要输入数据,而直接的循环上次输入的错识的提示.不是要代码,只不不明白为什么?
2015-08-25 14:03
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:0 
回复 15楼 TonyDeng

实战的风格
2015-08-25 21:14
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 15楼 TonyDeng
T版好兴致

剑栈风樯各苦辛,别时冰雪到时春
2015-08-25 21:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
以下是引用zhangok001在2015-8-25 14:03:29的发言:

我的意思是说goto 跳到回头后为什么没停下要求要输入数据,而直接的循环上次输入的错识的提示.不是要代码,只不不明白为什么?

老生常谈,scanf()在遇到非法输入数据后,若不清空输入缓冲区数据,则那些非法数据始终堵塞在输入流中,让后续的scanf()反覆读入非法数据从而死循环。这个问题坛上都不知回答过多少次,你不去看论坛历史帖子总问,大家不答你也是这个原因。

授人以渔,不授人以鱼。
2015-08-25 23:00
zhangok001
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2015-7-28
收藏
得分:0 
谢谢解答,
2015-08-26 14:22
快速回复:循环问题,为什么输入字符的时候,会一直循环,我只是想他输入字符的时 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048235 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved