小明今年9岁了,最近迷上了设计密码!今天,他又设计了一套他认为很复杂的密码,并且称之为“超级密码”.
说实话,这套所谓的“超级密码”其实并不难:对于一个给定的字符串,你只要提取其中的数字,然后连在一起构成一个整数,再乘以小明的幸运数字513,就是解密后的结果了~比如,字符串“ads2d4,122”,提取后的整数是24122,然后乘以513,就能得到解密后的结果:12374586.注:题目保证解密后的结果在32位无符号整数范围.输入: 输入首先包括一个正整数N,表示有N组测试用例. 每组数据占一行,包含一个长度不超过30的字符串.
输出: 请根据题目要求输出解密后的结果,每组数据输出一行.
这个题芝士:
1.
首先先把这个字符串的数字部分提取,此处是与字符’0’比较,是因为
char
类型的'0'
到'9'
字符的编码顺序和整数类型的0
到9
的数字是一样的。具体来说,它们的ASCII码值分别是48到57。此外也可以根据这个将char类型转为整数,可以通过将其减去字符'0'
得到想要的数字值。
2.利用Java内置函数
java中parseint是integer类的一个静态方法。它的作用是将一个字符串参数解析为一个整数,并返回一个对应的整数值。通常,字符串参数应该包含一个表示整数的数字字符序列,可以包含正负号。其基本语法是“int parseint(string s)”,s是要被解析为整数的字符串,该方法将返回一个int类型的值,如果解析失败,则会抛出一个异常。
package Java;import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner s=new Scanner(System.in);int i=s.nextInt();String end="";while(i!=0){Scanner r=new Scanner(System.in);String str=r.next();//输入字符//从字符里面提取数字for(int j=0;j<str.length();j++) {if (str.charAt(j) >= '0' && str.charAt(j) <= '9') {end = end + str.charAt(j);}}System.out.println(end);//利用内置函数把全是数字的字符转化为整数int t=Integer.parseInt(end);System.out.println(t*513);i--;}}}