本题要求提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。
输入格式:
输入在一行中给出一个不超过80个字符且以回车结束的字符串。
输出格式:
在一行中输出转换后的整数。题目保证输出不超过长整型范围。
输入样例:
free82jeep5
输出样例:
825
代码部分:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (// TODO Auto-generated method stub
Scanner in = new Scanner(System.in)) {
String str = new String();
str = in.nextLine();
int[] a = new int[80];
int count = 0;
int i;
for(i=0;i<str.length();i++) //取出字符串中的数字,存入数组中
{
if(str.charAt(i)>=48 && str.charAt(i)<=57)
{
a[count] = str.charAt(i);
count++; //实际数字应存到count-1,a[count]中未存数据
}
}
int sum=0;
int mult=1; //10的n次方
for(i=count-1;i>=0;i--) //从低位算起
{
a[i] = a[i] - 48; //此时a[i]中的数据均为ASCII码的形式,要将其(数字)转化为对应十进制,应减去48 ps:ASCII码中48-57对应十进制0-9
sum = sum + a[i]*mult;
mult = mult * 10;
}
System.out.println(sum);
in.close();
}
}
}
本题思路:
① 将字符串中的数字部分( ASCII码位于48 - 57之间 )取出,依次存入数组。
② 将数组中元素逆序取出,乘以mult( mult为10的n次方 ),并进行累加,即可将字符转换为对应整数。
java刚入门小白,如有错误或优化欢迎大佬们的指点!