HDU 2206 IP的计算
解题思路
1.分析题意可知,由于是IP地址检测,所以此题需要做很多检测
2.首先判断,如果满足以下任一条件,则直接返回No--输入的字符串长度等于0、输入的字符串长度大于15、输入的字符串以“.”开头或者结尾、输入的字符串以“.”分隔得到的数组长度不等于4
3.对输入数据做了校验之后,接下来就很简单了,我们只需对以“.”分隔得到的数组每个元素,做如下检测即可:元素长度需要满足length>=1&&length<=3、元素可以转换为无符号整数int、转换得到的int需要满足x>=0&&x<=255
4.满足以上所有条件,则返回YES
解题遇到的问题
认真审题、ACM还是首先要做好数据校验工作
后续需要总结学习的知识点
无
##解法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String input = scanner.nextLine();
boolean ans = true;
String[] array = input.split("\\.");
if (input.length() == 0 || input.length() > 15
|| input.charAt(0) == '.'
|| input.charAt(input.length() - 1) == '.'
|| array.length != 4) {
ans = false;
} else {
for (int i = 0; i < array.length; i++) {
if (array[i].length() < 1 || array[i].length() > 3) {
ans = false;
break;
}
int temp = 0;
try {
temp = Integer.parseInt(array[i]);
if (temp > 255 || temp < 0) {
ans = false;
break;
}
} catch (Exception e) {
ans = false;
break;
}
}
}
System.out.println(ans ? "YES" : "NO");
}
scanner.close();
}
}
网友评论