题目描述
小美拿到了一个由复数组成的数组,她想知道其中有多少个实数?
实数:有理数和无理数的总称。其中无理数是无限不循环小数,有理数包括整数和分数。
输入描述
第一行输入一个正整数,代表数组的大小。
第二行输入几个复数,代表小美拿到的数组。
1 <n< 10^5
后台数据保证复数为a或者a+bi的形式,其中a和b为绝对值不超过109的整数。
输出描述
一个整数,代表实数的数量。
实例1
输入
4
-5 5-i 6+3i -4+0i
输出
2
【只有第一个和第四个是实数】
解题思路
根据小学二年级所学的复数的定义,只要数字中 i 前的参数不为 0 就是复数。所以我们将输入的几个数字存到字符串数组中,再判断一下是否有“i”,如果没 i 就必是实数。但是输入中会存在 0i 的情况,所以我们还需要再单独判断一下 i 的参数是否为 0。
代码
import java.util.*;
/**
* Main
*
* @author Beau Wang
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int res = 0;
int a = in.nextInt();
String[] nums = new String[a];
for (int i = 0; i < a; i++) {
nums[i] = in.next();
}
for (String num : nums) {
if (!num.contains("i")) {
res++;
continue;
}
StringBuilder sb = new StringBuilder();
for (int i = num.length() - 1; i > 0; i--) {
if (num.charAt(i) == '+' || num.charAt(i) == '-') {
break;
}
sb.append(num.charAt(i));
}
if ("i0".contentEquals(sb)) {
res++;
}
sb.delete(0, sb.length());
}
System.out.println(res);
}
}