XiaoHui.net 笑汇程序员论坛首页
工作并快乐着,职业并休闲着
寻梦的岁月从不言辛苦几许,
不问收获几多……
» 游客:  申请新用户 | 登录 | 会员 | 统计 | 帮助 » XiaoHui.Net 笑汇程序员论坛 | 纯文字版 | 全站索引 | XiaoHui.com


[算法讨论] 菜鸟请教-怎样限制输入的一定要为数字?

RSS 订阅当前论坛  

上一主题 下一主题
     

标题: [算法讨论] 菜鸟请教-怎样限制输入的一定要为数字?  
 
酷酷狗
小水手
Rank: 1



UID 30298
精华 0
积分 4
帖子 4
阅读权限 10
注册 2007-6-29
状态 离线
菜鸟请教-怎样限制输入的一定要为数字?

int main()
{
        int  n;
        int  front = 1;

        while (1)
        {
                printf (" 请输入数字:");
                cin >> n ;

                if (n == 0)
                {
                        printf ("输入为0 \n");
                                                break;
                }
                else if (front * n == 0)   // 输入为字符
                {                 
                        printf ("输入为字符\n");
                }
                else
                {
                        fflush(stdin);    // 清空输入缓存
                        break ;
                }
        }
        return 0;
}

我实验了一下,当int型被输入了字符,则它为 0 ,于是我编了个程序。
上面这个程序,本来我希望能让用户一定要输入一个数字,才能跳出循环。可是当输入字母的时候,可能输入缓存一直有内容,导致进入死循环。请教大虾们该怎么办啊?  谢咯~~  :)
2007-6-29 22:22#1
查看资料  Blog  发短消息  顶部
 
黑色毛衣
小水手
Rank: 1



UID 30139
精华 0
积分 4
帖子 4
阅读权限 10
注册 2007-5-25
状态 离线
编译环境:.net2005  托管代码
用的是try...catch()
测试正常!

#include "stdafx.h"
#using <System.dll>

using namespace System;

int _tmain(int argc, _TCHAR* argv[])
{
        String^ str = gcnew String("");
    str = Console::ReadLine();
        try
        {
                int a = Convert::ToInt32(str);
        }
        catch(...)
        {
                Console::WriteLine("Not Int32");
                return -1;
        }
        Console::WriteLine(str);
        return 0;
}
2007-6-30 14:04#2
查看资料  Blog  发短消息  顶部
 
酷酷狗
小水手
Rank: 1



UID 30298
精华 0
积分 4
帖子 4
阅读权限 10
注册 2007-6-29
状态 离线
那在VC 6.0 上该怎么实现呢?
2007-7-2 09:22#3
查看资料  Blog  发短消息  顶部
 
令狐冲6188
传说中的水手
Rank: 5Rank: 5



UID 22450
精华 0
积分 6
帖子 6
阅读权限 1
注册 2006-7-22
状态 离线
简单方法(VC6.0+WINXP)

#include <iostream>

using namespace std;
int main()
{
        char ch;
       
        while(1)
        {       
                cin.get(ch);
                if (ch>'0' && ch<'9')
                        break;
        }
        cout<<"end"<<endl;
        return 0;
}

或者

#include <iostream>
#include <cctype>
using namespace std;
int main()
{
        char ch;
       
        while(1)
        {       
                cin.get(ch);
                if (isdigit(ch))
                        break;
        }
        cout<<"end"<<endl;
        return 0;
}

[ 本帖最后由 令狐冲6188 于 2007-7-4 09:18 编辑 ]
2007-7-4 09:11#4
查看资料  Blog  发短消息  顶部
 
xiaojia
传说中的水手
Rank: 5Rank: 5


UID 30336
精华 0
积分 7
帖子 7
阅读权限 1
注册 2007-7-11
状态 离线
ES_NUMBER


http://www.s3c2410.com.cn/
2007-7-11 10:43#5
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题  


 


所有时间为 GMT+8, 现在时间是 2008-12-2 13:24 Powered by Discuz! 4.1.0 清除 Cookies - XiaoHui.Net 笑汇程序员论坛 - Archiver