Java-------华为机试-------字符串分隔

好久不见. 提交于 2020-03-07 06:11:10

题目描述

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

输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)

输出描述:

输出到长度为8的新字符串数组

输入例子:

abc
123456789

输出例子:

abc00000
12345678
90000000

解法1:

 

暴力:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while (in.hasNext()) {
			String str = in.nextLine();
			int len = str.length();
			int m = len / 8;
			// 最少可分割的组数
			/* 下面嵌套循环,内层作用位分割为8个一组,外层循环确定组数 , “if”考虑特殊情况 */
			for (int i = 0; i <= m; i++) {
				if (i * 8 == len) {
					// 特殊情况:len=8,16,24……
					break; 
				}
				for (int j = 0; j < 8; j++) {
					if (i * 8 + j < len)// 判断是否字符串还没输出完
						System.out.print(str.charAt(i * 8 + j));
					// 没输出完的字符串余下部分继续输出
					else {
						System.out.print("0");
						// 字符串已输出完但是这个子字符串输出位数不足8位的补“0”
					}
				}
				System.out.println();// 换行。
			}
		}
	}
}

解法二:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String s = new String(sc.nextLine());
			if (s.length() % 8 != 0)
				// 如果不是八的倍数,字符串直接加八个“0”,
				s = s + "00000000"; // 明显字符串只要八个一组输出就可以啦;
			while (s.length() >= 8) {
				System.out.println(s.substring(0, 8));
				s = s.substring(8);
			}
		}
	}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!