Java方法類在Java中扮演的角色是重要的,例如String類的方法,就相當自帶的編寫的類,直接調用即可。大大省掉很多開發時間和代碼量,學會利用好方法類是需要不斷學習方法的,不斷認識新的對編程問題有用的方法,不斷對方法進行調用。
問題:判斷IP的合法性。(要求大部分用String,其實還是可以利用正則來進行判斷)
a)統計IP中點的個數。
b)截取每段IP部分的字符串。
c)截取每段的字符并且轉整判斷。
d)對整個IP進行判斷是否正確。
代碼階段:
1)首先利用Scanner進行輸入字符串
2)有點字符串和空字符串的相減
繼續加入連續點的判斷:
3)利用正則進行判斷字符兩端是否為點外的數字
4)當點數=3時進入轉整階段
5)確認每個part的字符都是符合IP的要求,便可以調試。
調試階段:
1)正確IP的輸入
2)錯誤IP的輸入
3) 紅色警告
不會出現,任意的字符串都可以進行判斷。
代碼如下,如果你們有什么更加好的改進請留言,謝謝。
import java.util.Scanner;
public class IP {
public static void main(String[] args) {
System.out.print("輸入一個IP地址:");? // 提示輸入IP地址
Scanner s = new Scanner(System.in);? ? // 從鍵盤讀入字符
String a = s.next();? ? ? ? // 將讀入后的字符轉成字符串
String z = a.replace(".", "");? // 用空字符替代點
int x = a.length() - z.length();? // 點的個數
int t =a.indexOf("..");
if(t<0)//判斷連續點
{
boolean y = z.matches("[0-9]+"); // 判斷除點外的字符是不是數字
if (!y || !Character.isDigit(a.charAt(0))
|| !Character.isDigit(a.charAt(a.length() - 1))) {
System.out.println("ERROR"); // 判斷除點外,第一位和最后一位字符是不是數字
}
else if (x == 3) // 判斷點的個數
{
int b = a.indexOf('.'); // 第一個點的位置
String c = a.substring(0, a.indexOf('.'));// 截取第一個數
int i = Integer.parseInt(c); // 第一個數
String d = a.substring(b + 1); // 截取第一個點后面的數
int e = d.indexOf('.'); // 第二個點的位置
String f = d.substring(0, e); // 截取第二個數
int j = Integer.parseInt(f); // 第二個數
String g = d.substring(e + 1); // 截取第二個點后面的數
int h = g.indexOf('.'); // 第三個點的位置
String l = g.substring(0, h); // 截取第三個數
int k = Integer.parseInt(l); // 第三個數
String m = g.substring(h + 1); // 截取第三個點后面的數
int n = Integer.parseInt(m); // 第四個數
if((i>0&&i <= 255)&& (j>0&&j <= 255)&& (k>=0&&k <= 255) && (n>=0&&n <= 255))
System.out.println("OK");
else
System.out.println("ERROR");
} else
System.out.println("ERROR");
}
else
System.out.println("ERROR");
}
}