java如何判断用户输入的是几位数字?题目:用户名必须为4位数字否则报错

intnum;intcount=0;printf("请输入一个数:");scanf("%d",&num);while(0!=num){num/=10;count++;}s... int num;
int count = 0;

printf("请输入一个数:");
scanf("%d", &num);

while (0 != num)
{
num /= 10;
count++;
}

switch (count)
{
case 1: printf("是一位数\n"); break;
case 2: printf("是两位数\n"); break;
case 3: printf("是三位数\n"); break;
case 4: printf("是四位数\n"); break;
case 5: printf("是五位数\n"); break;
case 6: printf("是六位数\n"); break;
case 7: printf("是七位数\n"); break;
case 8: printf("是八位数\n"); break;
default : printf("大于等于九位\n");

像这样的思路,是不适用的,也不要重复回答啦~因为当你输入0005的时候会判断成用户输了1位数字。所以不符合我的提问.

我的想法
Scanner jp=new Scanner(System.in);
System.out.print("用户名:");

int s1,s2,s3,s4;
int s1=jp.nextInt();
int s2=jp.nextInt();
int s3=jp.nextInt();
int s4=jp.nextInt();
if(0<=s1)
{
}if(s1<=9)
{
}else
{
System.out.print("输入数字不符合");
}
if(0<=s2)
{
}if(s2<=9)
{
}else
{
System.out.print("输入数字不符合");
}
if(0<=s3)
{
}if(s3<=9)
{
}else
{
System.out.print("输入数字不符合");
}
if(0<=s4)
{
}if(s4<=9)
{
}else
{
System.out.print("输入数字不符合");
}
System.out.println(""+s1+s2+s3+s4);
/**

但是这样的问题出现了一个当用户输入一个数字就得回车一下最后的运行结果大致是这样的
用户名:0
0
0
1
0001
如何又解决这样的问题?
展开
 我来答
hdparrot
2013-11-29 · TA获得超过2404个赞
知道小有建树答主
回答量:1385
采纳率:0%
帮助的人:1151万
展开全部
上面的是C语言的代码啊,呵呵。
下面才是JAVA的,其实思路很简单。
直接让用户输入一个数:
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
得到这个数字以后,有两种方法判断这个数是几位数。
方法一:
把这个数字转为字符串,
String s = String.valueOf(num);
然后用s.length()得到这个字符串的长度,这个长度就是数字的位数了,不过前提是这个数是正数,如果是负数,可以先判断一下num是否在于0,如果小于0,那么长度就应该是5才对。
方法二:
int i = 0;
while(num!=0){
num = num / 10;

i ++;

}
最后,这个 i 就是数字的位数。
乄阿德
2013-11-29 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:132万
展开全部
package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class GetNum {
public static void main(String[] args) {
String str2 = readString("请输入字符串:");
if (str2.length() == 4) {
try {
int i = Integer.parseInt(str2);
} catch (Exception e) {
System.out.println(String.format("你输入的不是数字:%s", str2));
return;
//e.printStackTrace();
}
System.out.println(String.format("你输入的4位数字是:%s", str2));
} else {
System.out.println("数据有误");
}
}

private static String readString(String p) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
System.out.print(p);
str = br.readLine();
} catch (IOException e) {
}
return str;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1c0b92e
2013-11-29 · TA获得超过144个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:257万
展开全部
将用户名转换为数字格式看看是否抛出异常,有则提示不是数字。否则查找有无小数点字符,有则提示输入整数。否则判断转换为数字格式是否是大于999且小于10000就行了
追问
大神同学~~~嘿嘿,可否把这样的思路写段小代码,让我读读好么。加强理解嘛~~~感激不尽哟~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
awfiitihc
2013-11-29 · TA获得超过133个赞
知道答主
回答量:148
采纳率:0%
帮助的人:53.4万
展开全部
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
while (scanner.hasNext()) {

String inputString = scanner.nextLine().trim();
try {
if (inputString.equals("exit")) {
break;
}
int inputInt = Integer.parseInt(inputString);
if (inputString.length()<4 || inputString.length()>4) {
System.out.println("所输入的用户名必须为4位数字,请重新输入!");
}

} catch (NumberFormatException e) {
System.out.println("请输入数字!");
}

}
}
试试这个
追问
哇,大神真的可以唉,能讲讲思路嘛~~好新奇,读不懂的说。你咋想的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
winfred176
2013-11-29
知道答主
回答量:21
采纳率:0%
帮助的人:5.1万
展开全部
你先判断字符有没有空格以及长度是否为4,在用Integer.parseInt 强制转换这个字符串,如果能够转换,说明是4位数
追问
大神,可否直接给代码让我膜拜读读看~~~
追答
public class GetNum {
public static void main(String[] args) {
String str2 = readString("请输入字符串:");
String str1=str2.trim();
if (str2.length() == 4 && str1.length() == 4) {
try {
int i = Integer.parseInt(str2);
} catch (Exception e) {
System.out.println(String.format("你输入的不是数字:%s", str2));
return;
//e.printStackTrace();
}
System.out.println(String.format("你输入的4位数字是:%s", str2));
} else {
System.out.println("数据有误");
}
}

private static String readString(String p) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
System.out.print(p);
str = br.readLine();
} catch (IOException e) {
}
return str;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式