public class feibnq {
public static void main(String args[]){
int sum=0;
while(true){
Scanner sc = new Scanner (System.in);
String a=sc.next();
int n=Integer.parseInt(a);
if(n>=1000&&n<=9999){
sum=n/10%10+n/100%10+n/1000%10+n%10;
System.out.println("sum="+sum);
}else if(a.equals("quit")){
break;
}else{
System.out.println("请输入四位数");
}
}
}
}
最近刚学java,在数据类型转换上有个问题,如图,我想实现输入四位数字求和时突然想加一个退出,即输入“quit”退出,然而一开始用的nextInt(),是int类型,所以报错,然后用sc.next(),用 int n=Integer.parseInt(a); 将输入的a转为zifu字符串类型,我的想法是输入数字则判断求和,输入“quit”则退出,结果我查了网上发现有的说必须字符串为数字,反正找了很多反而越来越糊涂了,有没有清楚的能讲一讲问题所在和解决方法。
PS解决方法最好不要是告诉我吧quit改成数字啊!
---------------------------------------------------------------
第二天的我。。。
public static void main(String args[]){
int sum=0;
while(true){
Scanner sc = new Scanner (System.in);
String a=sc.next();
//判断是否为纯数字
if(a.length()==4){
char c1=a.charAt(0);
char c2=a.charAt(1);
char c3=a.charAt(2);
char c4=a.charAt(3);
if(c1>='0'&&c1<='9'){
if(c2>='0'&&c2<='9'){
if(c3>='0'&&c3<='9'){
if(c4>='0'&&c4<='9'){
int n=Integer.parseInt(a);
if(n>=1000&&n<=9999){
sum=n/10%10+n/100%10+n/1000%10+n%10;
System.out.println("sum="+sum);
}else if(a.equals("quit")){
break;
}else{
System.out.println("请输入四位数");
}
}
}
}
}
}else{
System.out.println("请输入四位整数");
}
}
}
}
问了一个老师后,他告诉我,在String中非纯数字时要判断是否为纯数字,通过charAt来添加下标来获取各位数,然后依次判断(这个判断方法他说很蠢,很多重复。但因为我刚学,只能这样,后面会简单很多),在判断cige四个都为纯数字后再进行计算和转化,这时候Integer.parseInt就没问题了。
感觉自己蠢萌蠢萌,简单的一个四位数各个位和计算,突发奇想想加退出,结果搞了这么久。。。
-----------------------------------------------------------
继续
String str;
for(;;) {
System.out.println("please input a number:");
str = scan.next();
int j = 0;
for(;j < str.length();j++) {
char c = str.charAt(j);
if(c < '0' | c > '9') {
System.out.println("你输入的不是一个纯数字");
break;
}
}
if(j == str.length()) break;
}
想比上面的使用循环来省略很多重复的代码