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
如何又解决这样的问题? 展开
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
如何又解决这样的问题? 展开
7个回答
展开全部
上面的是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 就是数字的位数。
下面才是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 就是数字的位数。
展开全部
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;
}
}
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将用户名转换为数字格式看看是否抛出异常,有则提示不是数字。否则查找有无小数点字符,有则提示输入整数。否则判断转换为数字格式是否是大于999且小于10000就行了
追问
大神同学~~~嘿嘿,可否把这样的思路写段小代码,让我读读好么。加强理解嘛~~~感激不尽哟~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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("请输入数字!");
}
}
}
试试这个
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("请输入数字!");
}
}
}
试试这个
追问
哇,大神真的可以唉,能讲讲思路嘛~~好新奇,读不懂的说。你咋想的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你先判断字符有没有空格以及长度是否为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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询