关于非数字String转Int的一个问题

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;
			}

想比上面的使用循环来省略很多重复的代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字字符串换为整数有多种方式。其中一种常用的方法是使用C++的库函数`atoi()`。该函数将字符串换为整数并返回结果。 `atoi()`函数的原型为:`int atoi(const char *nptr)` 使用该函数时,您需要将要换的字符串作为参数传递给`atoi()`函数。该函数会从字符串的开头开始,将连续的数字字符换为整数。如果字符串的开头不是数字字符,则返回0。如果字符串中包含数字字符,则换停止,并返回截止到该数字字符之前的整数部分。 以下是使用`atoi()`函数将数字字符串换为整数的示例代码: ```cpp #include <cstdlib> // 包含atoi函数所在的头文件 int main() { const char* str = "12345"; // 要换的字符串 int num = atoi(str); // 调用atoi函数将字符串换为整数 return 0; } ``` 在上面的示例中,将字符串"12345"换为整数12345。 请注意,`atoi()`函数只能将字符串换为`int`类型的整数,如果要换为更大范围的整数,如`long long`类型,可以使用`atoll()`函数。 引用: :功 能: 把字符串换成整型数。 名字来源:ASCII to integer 的缩写。 原型: int atoi(const char *nptr); 函数说明: 参数nptr字符串,如果第一个空格字符存在,并且,如果不是数字也不是正负号则返回零,否则开始做类型换,之后检测到数字(包括结束符 \0) 字符时停止换,返回整型数。 :功能: 把字符串换成长长整型数    用 法: long long atoll(const char *nptr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值