当前位置:   article > 正文

【Java】 牛客网华为机试108题汇总_牛客网华为题库

牛客网华为题库


文章目录

目录

目录

1、求字符串最后一个单词长度

2、计算字符串个数

3、明明的随机数

4、字符串分割

5、进制转换

6、质数因子

7、HJ19 简单错误记录

8、HJ25 数据分类处理

9 HJ30 字符串合并处理



1、求字符串最后一个单词长度


计算字符串最后一个单词的长度,单词以空格隔开。

  1. import java.util.Scanner;
  2. /**
  3.  * @Author: Stephen
  4.  * @Date: 2020/3/21 13:24
  5.  * @Content: 计算字符串最后一个单词的长度,单词以空格隔开。
  6.  */
  7. public class StrLength01 {
  8.     public static void main(String[] args) {
  9.         Scanner input = new Scanner(System.in);
  10.         while (input.hasNext()){
  11.             String[] str = input.nextLine().split(" ",-1);
  12.             System.out.println(str[str.length-1].length());
  13.         }
  14.     }
  15. }


2、计算字符串个数


写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,
然后输出输入字符串中含有该字符的个数。不区分大小写。

  1. import java.util.Scanner;
  2. /**
  3.  * @Author: Stephen
  4.  * @Date: 2020/3/21 14:17
  5.  * @Content: 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,
  6.  * 然后输出输入字符串中含有该字符的个数。不区分大小写。
  7.  */
  8. public class WordCount {
  9.     public static void main(String[] args) {
  10.         Scanner input = new Scanner(System.in);
  11.         String str = input.nextLine();
  12.         String cha = input.nextLine();
  13.         int count = 0;
  14.         if (str != null && str.length()>0){
  15.             for (int i=0;i<str.length();i++){
  16.                 if (cha.toLowerCase().charAt(0)==str.toLowerCase().charAt(i)){
  17.                     count++;
  18.                 }
  19.             }
  20.         }
  21.         System.out.println(count);
  22.     }
  23. }



3、明明的随机数


明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),
对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。
然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。
请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

方法一:arrayList+Collections

  1. import java.util.*;
  2. /**
  3.  * @Author: Stephen
  4.  * @Date: 2020/3/21 14:45
  5.  * @Content:
  6.  * 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个11000之间的随机整数(N≤1000),
  7.  * 对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。
  8.  * 然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。
  9.  * 请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。
  10.  */
  11. public class RandomTest {
  12.     public static void main(String[] args) {
  13.          Scanner num = new Scanner(System.in);
  14.         while (num.hasNext()){
  15.             int number = num.nextInt();
  16.             Set<Integer> numbers = new HashSet<Integer>();
  17.             List<Integer> list = new ArrayList<Integer>();
  18.             for (int i =0;i<number;i++){
  19.                 // 曲解了题意误以为随机输入是用随机数输入
  20. //            Random rand = new Random();
  21. //            int a=rand.nextInt(1001);
  22.                 numbers.add(num.nextInt());
  23.             }
  24.             for (int a:numbers){
  25.                 list.add(a);
  26.             }
  27.             Collections.sort(list);
  28.             for (int a:list){
  29.                 Systems.out,println(a);
  30.             }
  31.         }
  32.     }
  33. }


方法二:treeset 去重
写的时候是用hashset去重再转arrayList排序,经阅读代码补充使用treeset直接去重排序treeset详解

  1. import java.util.*;
  2. public class RandomTest {
  3.     public static void main(String[] args) {
  4.         Scanner sc = new Scanner(System.in);
  5.         while(sc.hasNext()){
  6.             int num = sc.nextInt();
  7.             TreeSet<Integer> set = new TreeSet<Integer>();
  8.             for(int i = 0 ; i < num ;i++){
  9.                 int curr = sc.nextInt();
  10.                 set.add(curr);
  11.             }
  12.             for(Integer i : set){
  13.                 System.out.println(i);
  14.             }
  15.         }
  16.     }
  17. }

方法三:Arrays+TreeSet

  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. import java.util.Set;
  4. import java.util.TreeSet;
  5. /**
  6. * Created by Administrator on 2022/11/29.
  7. */
  8. public class Main {
  9. public static void main(String[] args) {
  10. Scanner sc = new Scanner(System.in);
  11. while (sc.hasNext()) {
  12. int num = sc.nextInt();
  13. int[] arr = new int[num];
  14. //存数组
  15. for (int i = 0; i < num; i++) {
  16. arr[i] = sc.nextInt();
  17. }
  18. //升序
  19. Arrays.sort(arr);
  20. //set自带去重
  21. Set<Integer> set = new TreeSet<>();
  22. for (int i = 0; i < num; i++) {
  23. set.add(arr[i]);
  24. }
  25. //遍历输出
  26. for (Integer integer : set) {
  27. System.out.println(integer);
  28. }
  29. }
  30. }
  31. }

方法四:有序TreeSet 

  1. import java.util.Scanner;
  2. import java.util.TreeSet;
  3. import java.util.Iterator;
  4. import java.util.Set;
  5. /**
  6. * Created by Administrator on 2022/11/29.
  7. */
  8. public class Main {
  9. public static void main(String[] args) {
  10. Scanner sc = new Scanner(System.in);
  11. while (sc.hasNext()) {
  12. int num = sc.nextInt();
  13. //set自带去重
  14. Set<Integer> set = new TreeSet<>();
  15. //存数组
  16. for (int i = 0; i < num; i++) {
  17. set.add(sc.nextInt());
  18. }
  19. //遍历输出
  20. Iterator iterator = set.iterator();
  21. while (iterator.hasNext()) {
  22. Integer element = (Integer) iterator.next();
  23. System.out.println(element);
  24. }
  25. }
  26. }
  27. }


4、字符串分割


连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

  1. import java.util.Scanner;
  2. /**
  3.  * @Author: Stephen
  4.  * @Date: 2020/3/21 15:38
  5.  * @Content:
  6.  * •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
  7.  * •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
  8.  */
  9. public class StrSplit {
  10.     public static void main(String[] args) {
  11.         Scanner input = new Scanner(System.in);
  12.         while (input.hasNext()){
  13.             String str = input.nextLine();
  14.             while (str.length()>=8){
  15.                 System.out.println(str.substring(0,8));
  16.                 str=str.substring(8);
  17.             }
  18.             if (str.length()<8 && str.length()>0){
  19.                 str = str+"0000000";
  20.                 System.out.println(str.substring(0,8));
  21.             }
  22.         }
  23.     }
  24. }


5、进制转换


写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

  1. import java.util.Scanner;
  2. /**
  3.  * @Author: Stephen
  4.  * @Date: 2020/3/21 15:57
  5.  * @Content:
  6.  * 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
  7.  */
  8. public class SystemTransform {
  9.     public static void main(String[] args) {
  10.         Scanner sc = new Scanner(System.in);
  11.         while(sc.hasNext()){
  12.             String str = sc.nextLine();
  13.             System.out.println(fun(str.substring(2)));
  14.         }
  15.     }
  16.     public static int fun(String s){
  17.         int n=0;
  18.         int count= 0;
  19.         int temp = 0;
  20.         char ch;
  21.         while(count<s.length())
  22.         {
  23.             ch = s.charAt(s.length()-count-1);
  24.             if(ch>='0'&&ch<='9'){
  25.                 temp = ch-'0';
  26.             }else if(ch>='A'&&ch<='Z'){
  27.                 temp = ch-'A'+10;
  28.             }else if(ch>='a'&&ch<='z'){
  29.                 temp = ch-'a'+10;
  30.             }else{
  31.                 break;
  32.             }
  33.             n += temp*Math.pow(16,count);
  34.             count++;
  35.         }
  36.         return n;
  37.     }
  38. }


6、质数因子


输入一个正整数,按照从小到大的顺序输出它的所有质因子(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格

  1. package com.njbdqn.services;
  2. import java.util.Scanner;
  3. /**
  4.  * @Author: Stephen
  5.  * @Date: 2020/3/23 21:46
  6.  * @Content:
  7.  * 输入一个正整数,按照从小到大的顺序输出它的所有质因子(如180的质因子为2 2 3 3 5
  8.  * 最后一个数后面也要有空格
  9.  */
  10. public class Primefactors {
  11.     public static void main(String[] args) {
  12.         public static void main(String [] args)
  13.         {
  14.             Scanner sc=new Scanner(System.in);
  15.             long params=sc.nextLong();
  16.             if(params<2)
  17.             {
  18.                 sc.close();
  19.                 return ;
  20.             }
  21.             String result =getResult(params);
  22.             System.out.println(result);
  23.             sc.close();
  24.         }
  25.     }
  26.     public static String getResult(long ulDataInput){
  27.         StringBuilder str=new StringBuilder();
  28.         int index=2;
  29.         while(index<=ulDataInput)
  30.         {
  31.             if(ulDataInput%index==0){
  32.                 if(index==ulDataInput){
  33.                     str.append(index).append(" ");
  34.                     break;
  35.                 }else{
  36.                     str.append(index).append(" ");
  37.                     ulDataInput=ulDataInput/index;
  38.                 }
  39.             }else
  40.             {
  41.                 index++;
  42.             }
  43.         }
  44.         return str.toString();
  45. }

7、HJ19 简单错误记录

方法一:HashMap 方式 ,这个位置发生变化,需要借助数组方式保存进入顺序

  1. import java.util.Scanner;
  2. import java.lang.String;
  3. import java.util.HashMap;
  4. import java.util.Arrays;
  5. import java.util.*;
  6. // 注意类名必须为 Main, 不要有任何 package xxx 信息
  7. public class Main {
  8. public static void main(String[] args) {
  9. Scanner in = new Scanner(System.in);
  10. // 注意 hasNext 和 hasNextLine 的区别
  11. // while (in.hasNextInt()) { // 注意 while 处理多个 case
  12. // int a = in.nextInt();
  13. // int b = in.nextInt();
  14. // System.out.println(a + b);
  15. // }
  16. int start=0;
  17. HashMap<String,Integer> hm=new HashMap<String,Integer> ();
  18. ArrayList<String> errKeyList = new ArrayList<String>();
  19. ArrayList<Integer> errValueList = new ArrayList<Integer>();
  20. // String temp="esdd\\ed";
  21. // String[] temp2=temp.split("\\\\");
  22. // System.out.print(temp2.length);
  23. // System.out.print(temp2[0]);
  24. // System.out.print(temp2[1]);
  25. while (in.hasNextLine()) { // 注意 while 处理多个 case
  26. String a = in.nextLine();
  27. String[] b =a.split(" ");
  28. String c2="";
  29. if (b[0].indexOf("\\")!=-1) // 有\就截取,没有就原封不动
  30. c2 = b[0].substring(b[0].lastIndexOf("\\")+1,b[0].length());
  31. else
  32. c2 = b[0];
  33. start=0;
  34. if(c2.length()>16){
  35. start=c2.length()-16;
  36. c2=c2.substring(start,c2.length());
  37. }
  38. String d=c2+" "+b[1];
  39. Integer pos=hm.get(d);
  40. if(pos==null){
  41. hm.put(d,errKeyList.size());
  42. errKeyList.add(d);
  43. errValueList.add(1);
  44. }else{
  45. errValueList.set(pos,errValueList.get(pos)+1);
  46. }
  47. }
  48. start=0;
  49. if(errKeyList.size()>8) start=errKeyList.size()-8;
  50. for(int i=start;i<errKeyList.size();i++){
  51. String keyString=errKeyList.get(i);
  52. String[] keyArray=keyString.split(" ");
  53. System.out.print(keyArray[0]);
  54. System.out.print(" ");
  55. System.out.print(keyArray[1]);
  56. System.out.print(" ");
  57. System.out.println(errValueList.get(i));
  58. }
  59. }
  60. }

方法二:  LinkedHashMap 方式,map 位置不变

  1. import java.io.*;
  2. import java.util.*;
  3. public class Main{
  4. public static void main(String[] args) throws IOException{
  5. BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  6. Map<String,Integer> map = new LinkedHashMap();
  7. String tstr = null;
  8. while((tstr = bf.readLine()) != null && !tstr.equals("")){
  9. String[] str = tstr.split("\\s+");//空格符隔开
  10. String fname=str[0].substring(str[0].lastIndexOf("\\") + 1);
  11. fname = fname.substring(Math.max(fname.length()-16 ,0))+" "+str[1];
  12. Integer tmp = map.get(fname);
  13. if(tmp == null)
  14. map.put(fname,1);
  15. else
  16. map.put(fname, tmp+1);
  17. }
  18. int count = 0;
  19. //遍历map,entrySet()返回了 HashMap 中所有映射项的一个 set 集合视图
  20. for(Map.Entry<String,Integer> it : map.entrySet()){
  21. if(map.size() - count <= 8)
  22. System.out.println(it.getKey()+" "+it.getValue());
  23. count++;
  24. }
  25. }
  26. }

8、HJ25 数据分类处理

方法一:treeset(是小到大有序的)+indexof(或contains,包含字串)

  1. import java.util.Scanner;
  2. import java.lang.String;
  3. import java.util.*;
  4. // 注意类名必须为 Main, 不要有任何 package xxx 信息
  5. public class Main {
  6. public static void main(String[] args) {
  7. Scanner in = new Scanner(System.in);
  8. // 注意 hasNext 和 hasNextLine 的区别
  9. // while (in.hasNextInt()) { // 注意 while 处理多个 case
  10. // int a = in.nextInt();
  11. // int b = in.nextInt();
  12. // System.out.println(a + b);
  13. // }
  14. while (in.hasNextLine()) { // 注意 while 处理多个 case
  15. String I = in.nextLine();
  16. String[] I2=I.split(" ");
  17. int i=0;
  18. String R = in.nextLine();
  19. String[] R2=R.split(" ");
  20. TreeSet<Integer> ts=new TreeSet<Integer>();
  21. for(i=1;i<R2.length;i++){
  22. ts.add(Integer.parseInt(R2[i]));
  23. }
  24. Iterator iter=ts.iterator();
  25. int count2=0;
  26. ArrayList<Integer> rs=new ArrayList<Integer>();
  27. for(i=0;i<ts.size();i++){
  28. Integer strTempi1=(Integer)iter.next();
  29. String strTempi=Integer.toString(strTempi1);
  30. // System.out.println(strTempi);
  31. int equitcont=0;
  32. for(int j=1;j<I2.length;j++){
  33. if(I2[j].contains(strTempi)){
  34. equitcont++;
  35. if(equitcont==1){
  36. rs.add(Integer.parseInt(strTempi));
  37. rs.add(equitcont);
  38. count2=rs.size();
  39. }
  40. rs.set(count2-1,equitcont);
  41. rs.add(j-1);
  42. rs.add(Integer.parseInt(I2[j]));
  43. }
  44. }
  45. }
  46. if(rs.size()>0){
  47. System.out.print(rs.size());
  48. System.out.print(" ");
  49. for(i=0;i<rs.size();i++){
  50. System.out.print(rs.get(i));
  51. System.out.print(" ");
  52. }
  53. }
  54. }
  55. }
  56. }

方法二:Arrays.sort函数 ++indexof(或contains,包含字串)

  1. import java.util.Scanner;
  2. import java.lang.String;
  3. import java.util.*;
  4. // 注意类名必须为 Main, 不要有任何 package xxx 信息
  5. public class Main {
  6. public static void main(String[] args) {
  7. Scanner in = new Scanner(System.in);
  8. // 注意 hasNext 和 hasNextLine 的区别
  9. // while (in.hasNextInt()) { // 注意 while 处理多个 case
  10. // int a = in.nextInt();
  11. // int b = in.nextInt();
  12. // System.out.println(a + b);
  13. // }
  14. while (in.hasNextLine()) { // 注意 while 处理多个 case
  15. String I = in.nextLine();
  16. String[] I2=I.split(" ");
  17. int i=0;
  18. String R = in.nextLine();
  19. String[] R2=R.split(" ");
  20. int[] R1=new int[R2.length-1];
  21. for(i=1;i<R2.length;i++){
  22. R1[i-1]=Integer.parseInt(R2[i]);
  23. }
  24. Arrays.sort(R1);
  25. int count2=0;
  26. ArrayList<Integer> rs=new ArrayList<Integer>();
  27. for(i=0;i<R1.length;i++){
  28. if(i>0 && R1[i-1]==R1[i]) continue;
  29. String strTempi=Integer.toString(R1[i]);
  30. int equitcont=0;
  31. for(int j=1;j<I2.length;j++){
  32. if(I2[j].contains(strTempi)){
  33. equitcont++;
  34. if(equitcont==1){
  35. rs.add(Integer.parseInt(strTempi));
  36. rs.add(equitcont);
  37. count2=rs.size();
  38. }
  39. rs.set(count2-1,equitcont);
  40. rs.add(j-1);
  41. rs.add(Integer.parseInt(I2[j]));
  42. }
  43. }
  44. }
  45. if(rs.size()>0){
  46. System.out.print(rs.size());
  47. System.out.print(" ");
  48. for(i=0;i<rs.size();i++){
  49. System.out.print(rs.get(i));
  50. System.out.print(" ");
  51. }
  52. }
  53. }
  54. }
  55. }

9 HJ30 字符串合并处理

方法一:自己编写

  1. import java.util.Scanner;
  2. import java.lang.String;
  3. import java.util.*;
  4. // 注意类名必须为 Main, 不要有任何 package xxx 信息
  5. public class Main {
  6. public static void main(String[] args) {
  7. Scanner in = new Scanner(System.in);
  8. // 注意 hasNext 和 hasNextLine 的区别
  9. // while (in.hasNextInt()) { // 注意 while 处理多个 case
  10. // int a = in.nextInt();
  11. // int b = in.nextInt();
  12. // System.out.println(a + b);
  13. // }
  14. while (in.hasNextLine()) { // 注意 while 处理多个 case
  15. String a = in.nextLine();
  16. String c = a.replace(" ", "");
  17. char[] d = new char[c.length() / 2];
  18. if (c.length() % 2 == 1) d = new char[(c.length() + 1) / 2];
  19. char[] e = new char[c.length() / 2];
  20. char[] f = c.toCharArray();
  21. int i = 0;
  22. for (i = 0; i < f.length; i++) {
  23. if (i % 2 == 0)
  24. d[i / 2] = f[i];
  25. else {
  26. e[i / 2] = f[i];
  27. // System.out.println(i/2);
  28. }
  29. }
  30. Arrays.sort(d);
  31. Arrays.sort(e);
  32. HashMap<Character, Character> map = new HashMap<Character, Character>();
  33. map.put('0', '0');
  34. map.put('1', '8');
  35. map.put('2', '4');
  36. map.put('3', 'C');
  37. map.put('4', '2');
  38. map.put('5', 'A');
  39. map.put('6', '6');
  40. map.put('7', 'E');
  41. map.put('8', '1');
  42. map.put('9', '9');
  43. map.put('a', '5');
  44. map.put('b', 'D');
  45. map.put('c', '3');
  46. map.put('d', 'B');
  47. map.put('e', '7');
  48. map.put('f', 'F');
  49. map.put('A', '5');
  50. map.put('B', 'D');
  51. map.put('C', '3');
  52. map.put('D', 'B');
  53. map.put('E', '7');
  54. map.put('F', 'F');
  55. for (i = 0; i < d.length; i++) {
  56. if(map.get(d[i])!=null){
  57. d[i] = map.get(d[i]);
  58. }
  59. }
  60. for (i = 0; i < e.length; i++) {
  61. if(map.get(e[i])!=null)
  62. e[i] = map.get(e[i]);
  63. }
  64. for (i = 0; i < d.length; i++) {
  65. System.out.print(d[i]);
  66. if (i < e.length) System.out.print(e[i]);
  67. }
  68. ;
  69. }
  70. }
  71. }

方法二:网上收集,采用 StringBuilder.reverse() 方法

  1. package nowcoder.x3x;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. public class HJ030 {
  5. public static void main(String[] args) throws Exception {
  6. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  7. String line = br.readLine();
  8. // 合并第一步
  9. String m = line.replace(" ", "");
  10. char[] chars = m.toCharArray();
  11. // 第二步 偶数位
  12. for (int i = 0; i < chars.length; i = i + 2) {
  13. for (int j = 0; j < chars.length - 2; j = j + 2) {
  14. if (chars[j] > chars[j + 2]) {
  15. char temp = chars[j];
  16. chars[j] = chars[j + 2];
  17. chars[j + 2] = temp;
  18. }
  19. }
  20. }
  21. // 第二步 奇数位
  22. for (int i = 1; i < chars.length; i = i + 2) {
  23. for (int j = 1; j < chars.length - 2; j = j + 2) {
  24. if (chars[j] > chars[j + 2]) {
  25. char temp = chars[j];
  26. chars[j] = chars[j + 2];
  27. chars[j + 2] = temp;
  28. }
  29. }
  30. }
  31. // 第三步 转换
  32. StringBuilder stringBuilder = new StringBuilder();
  33. for (char c : chars) {
  34. if ((c >= '0' && c <= '9')
  35. || (c >= 'A' && c <= 'F')
  36. || (c >= 'a' && c <= 'f')
  37. ) {
  38. StringBuilder binaryString = new StringBuilder(Integer.toBinaryString(Integer.parseInt(String.valueOf(c), 16)));
  39. int len = binaryString.length();
  40. if (len < 4) {
  41. for (int i = 0; i < 4 - len; i++) {
  42. binaryString.insert(0, "0");
  43. }
  44. }
  45. binaryString.reverse();
  46. int y = Integer.parseInt(binaryString.toString(), 2);
  47. stringBuilder.append(Integer.toHexString(y).toUpperCase());
  48. } else {
  49. stringBuilder.append(c);
  50. }
  51. }
  52. System.out.println(stringBuilder);
  53. }
  54. }

9、HJ39 判断两个IP是否属于同一子网

方法一:作者编写

  1. import java.util.Scanner;
  2. import java.util.*;
  3. import java.lang.*;
  4. // 注意类名必须为 Main, 不要有任何 package xxx 信息
  5. public class Main {
  6. // public static String fill(String a){
  7. // String b="";
  8. // for (int i=0;i<8-a.length();i++){
  9. // b="0"+b;
  10. // }
  11. // return b;
  12. // }
  13. public static boolean isMaskError (String[] ip){
  14. String[] b={"","","",""};
  15. boolean result=false;
  16. for (int i=0;i<4;i++){
  17. b[i]=Integer.toBinaryString(Integer.valueOf(ip[i]));
  18. // fill
  19. if(b[i].length()<8){
  20. for(int j=0;j<8-b[i].length();j++){
  21. b[i]="0"+b[i];
  22. }
  23. }
  24. }
  25. String link=b[0]+b[1]+b[2]+b[3];
  26. if(b[0].charAt(0)=='0') return true;
  27. if(link.contains("01")) result=true;
  28. return result;
  29. }
  30. public static void main(String[] args) {
  31. Scanner in = new Scanner(System.in);
  32. // 注意 hasNext 和 hasNextLine 的区别
  33. // while (in.hasNextInt()) { // 注意 while 处理多个 case
  34. // int a = in.nextInt();
  35. // int b = in.nextInt();
  36. // System.out.println(a + b);
  37. // }
  38. while (in.hasNextLine()) { // 注意 while 处理多个 case
  39. String[] a1=in.nextLine().split("\\.");
  40. String[] a2= in.nextLine().split("\\.");
  41. String[] a3 = in.nextLine().split("\\.");
  42. if(isMaskError(a1)) {
  43. System.out.println(1);
  44. continue;
  45. }
  46. int[] b1=new int[4];
  47. int[] b2=new int[4];
  48. int[] b3=new int[4];
  49. int[] c1=new int[4];
  50. int[] c2=new int[4];
  51. int[] d1=new int[4];
  52. // String[] d2=new String[4];
  53. int i=0;
  54. boolean isequit=true;
  55. boolean errorip=false;
  56. for(i=0;i<4;i++){
  57. b1[i]=Integer.parseInt(a1[i]);
  58. b2[i]=Integer.parseInt(a2[i]);
  59. b3[i]=Integer.parseInt(a3[i]);
  60. // ip or mask error
  61. if(!(b1[i]>=0 && b1[i]<256 && b2[i]>=0 && b2[i]<256 && b3[i]>=0 && b3[i]<256)){
  62. errorip=true;
  63. break;
  64. }
  65. c1[i]=b1[i]&b2[i];
  66. c2[i]=b1[i]&b3[i];
  67. if(c1[i]!=c2[i]) isequit=false;
  68. }
  69. // is 0 not 2 error 1
  70. if(errorip) {
  71. System.out.println(1);
  72. continue;
  73. }
  74. // is 0 not 2 error 1
  75. if(isequit) System.out.println(0); else System.out.println(2);
  76. }
  77. }
  78. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/469063
推荐阅读
相关标签
  

闽ICP备14008679号