[Java]PTA:jmu-Java-01入门-取数字浮点数
本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。
输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。
输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。
输入样例:
-123.01
234
输出样例:
7
9
代码如下:
import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNextLine()){int sum=0;String doublestr=sc.nextLine();for(int i=0;i<doublestr.length();i++){char c=doublestr.charAt(i);if(Character.isDigit(c)){int num=c-'0';sum+=num;}}System.out.println(sum);}sc.close();}
}
学习心得:
先说一下这道题的总体思路:
因为主要是提取浮点数中的数字,如果单纯用取模的话,会把个位数字和整个小数部分提取出来(比如对 7.56 取模 10 的结果还是7.56),这显然与题意不符。所以在做这类浮点数提取数字的题目,不妨将浮点数转换为字符串,再把数字部分提取出来就好了。
那相较于前几题,这道题新用到的一些知识点如下:
1、java.lang.String 类的方法
(1)int length():返回字符串的长度(也就是字符的个数),示例:"abc".length() → 3。
(2)boolean isEmpty():判断字符串是否为空(长度为 0),示例:"".isEmpty() → true。
(3)char charAt(int index):返回指定索引处的字符(索引从 0 开始),示例:"hello".charAt(1) → 'e'。
(4)int indexOf(String str):返回子串 str 第一次出现的索引(没找到返回 - 1),示例:"abcabc".indexOf("ab") → 0。
(5)int lastIndexOf(String str):返回子串 str 最后一次出现的索引,示例:"abcabc".lastIndexOf("ab") → 3。
(6)boolean equals(Object obj):比较两个字符串的内容是否相等(区分大小写),示例:"abc".equals("ABC") → false。
(7)boolean equalsIgnoreCase(String str):忽略大小写比较内容,示例:"abc".equalsIgnoreCase("ABC") → true。
(8)String substring(int beginIndex):从 beginIndex 截取到末尾,示例:"hello".substring(2) → "llo".
(9)String substring(int beginIndex, int endIndex):截取 [beginIndex, endIndex) 范围的子串(含头不含尾),示例:"hello".substring(1, 4) → "ell"。
(10)String[] split(String regex):按指定正则表达式拆分字符串为数组,示例:"a,b,c".split(",") → ["a", "b", "c"]。
(11)String toLowerCase():转为小写,示例:"HELLO".toLowerCase() → "hello"。
(12)String toUpperCase():转为大写,示例:"hello".toUpperCase() → "HELLO"。
(13)String replace(char oldChar, char newChar):替换所有指定字符,示例:"aaa".replace('a', 'b') → "bbb"。
(14)String replace(String oldStr, String newStr):替换所有指定子串,示例:"abab".replace("ab", "cd") → "cdcd"。
这道题只用到了(1)(3)小点,但是我还是把常用的一些方法也提供出来方便大家使用。
2、java.lang.Character类的方法
(1)isDigit(char c):判断字符是否为数字('0'-'9'),示例:Character.isDigit('5') → true;Character.isDigit('a') → false。
(2)isLetter(char c):判断字符是否为字母(包括大小写字母,如 'a'-'z'、'A'-'Z'),示例:Character.isLetter('A') → true;Character.isLetter('3') → false。
(3)isLetterOrDigit(char c):判断字符是否为字母或数字,示例:Character.isLetterOrDigit('b') → true;Character.isLetterOrDigit('@') → false。
(4)isLowerCase(char c) / isUpperCase(char c):判断字符是否为小写 / 大写字母,示例:Character.isLowerCase('c') → true;Character.isUpperCase('D') → true。
(5)isWhitespace(char c):判断字符是否为空白字符(空格 ' '、制表符 '\t'、换行符 '\n' 等),示例:Character.isWhitespace(' ') → true;Character.isWhitespace('a') → false。
值得注意的是,这几个方法返回的都是 boolean 值。
今天的分享就到这里了。