Java机试题目_怎样截取字符串
面试题1 怎样截取字符串
考题题干
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。
试题分析
本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。
代码
package t0806;
import java.util.Scanner;
public class test3 {
static String ss; //要进行截取操作的字符串
static int n; //截取的字符串的字节数
public static void main(String[] args) {
System.out.println("请输入字符串:");
Scanner scStr = new Scanner(System.in); //从键盘获取字符串
ss = scStr.next(); //将Scanner对象中的内容以字符串的形式取出来
System.out.println("请输入字节数:");
Scanner scByte = new Scanner(System.in);//从键盘获取字符串
n = scByte.nextInt(); //将Scanner对象中的内容以数值的形式取出来
Interception(setValue()); //方法与方法间的套用
}
// 这个方法好,因为常见的都是字符串的方式读进来的,这样任何输入都转换成数组,方面比较
public static String[] setValue() { //此方法的作用是将字符串转换成字符串数组
String[] string = new String[ss.length()];//创建一个字符数组string
for (int i = 0; i < string.length; i++) {
string[i] = ss.substring(i, i + 1);
//将字符串ss中的第i个字符取出,放入字符数组中string中
}
return string; //将这个字符数组返回
}
public static void Interception(String[] string) {
int count = 0;
String m = "[\u4e00-\u9fa5]"; //汉字的正则表达试
System.out.println("以每" + n + "字节划分的字符串如下所示:");
for (int i = 0; i < string.length; i++) {
if (string[i].matches(m)) {
//将字符数组中的每一个元素与表则表达式进行匹配,如果相同则返回true
count = count + 2; //如果当前字符是汉字,计数器count就加2
} else {
count = count + 1; //如果当前字符不是汉字,计数器count就加1
}
if (count < n) { //如果当前计数器count的值小于n,则输出当前字符
System.out.print(string[i]);
} else if (count == n) { //如果当前计数器count的值等于n,则输出当前字符
System.out.print(string[i]);
count = 0;
System.out.println(); //内循环结果,则需要换行,起到控制打印格式的作用
} else {
count = 0;//如果当前计数器count的值大于n,则计数器count清零,接着执行外部循环
System.out.println();
}
}
}
}
Java机试题目_怎样截取字符串的更多相关文章
- 华为2013年西安java机试题目:如何过滤掉数组中的非法字符。
这道题目为记忆版本: 题目2描述: 编写一个算法,过滤掉数组中的非法字符,最终只剩下正式字符. 示例:输入数组:“!¥@&HuaWei*&%123” 调用函数后的输出结果,数组:“Hu ...
- Java机试题目
1.生成一个随机四位数,每位数字不重复. package com.cloud.stagging.lhcloudzuul; import java.util.Random; /** * 1.生成一个随机 ...
- java机试要点
Java机试准备 一般结构: import java.util.Scanner; public class Main{ public static void main(String[] args) ...
- 华为JAVA机试流程
1.JAVA机试流程:①打开IE浏览器,输入机试系统IP地址(以当天告知的地址为准):②输入姓名.手机,选择“C/C++”或“JAVA”,登录:③登录后显示题目,阅读题目并点击页面最下方的“下载框架文 ...
- java常见机试题目(1)
好久没写博客了,今天重新开始,发现自己学习的知识很糙,就是知道,也能说出来,但是很多知识点不清晰,不深入,所以呢,写个博客总结一些程序,理清概念. 1java中大小写字母转化,在java中存在api ...
- 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- Hua Wei 机试题目一
一.身份证号码验证 题目描述: 我国公民的身份证号码特点如下:1. 长度为18位:2. 第1-17位只能为数字:3. 第18位可以是数字或者小写英文字母x.4. 身份证号码的第7~14位表示持有人生日 ...
- 9月5日 华为2014校园招聘的机试题目_C语言版答案
手有些生了. 题目: 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串.压缩规则:1.仅压缩连续重复出现的字符.比如 ...
- 一道来自华为的C机试题目
题目是这样的 求一个字符串中连续字母的个数 比如I have a book. : 1 I have a dog. : 0 I haavee aa dogg : 4 #include <windo ...
随机推荐
- Property cannot be found on forward class object?
I have a UIView and I'm trying to set its layer properties. self.colorSwatch = [[UIView alloc] initW ...
- light oj 1138
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit Status Pract ...
- Struts2 + Spring + Hibernate 通用 Service 和 DAO
我在 Struts2 + Spring + Hibernate 项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo(bean).使用这两个Service 和 DAO 可以 ...
- Servlet+Tomcat 界面登录
1.文件夹建立(必须按照这个规范,文件名和文件夹名必须一致) a.在%TOMCAT_HOME%\webapps下建立一个文件夹,取名MyWebsit b.在MyWebsit文件夹下新建WEB_INF文 ...
- 初学XPath,其实很简单
XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. (我的理解:XPath 就是一个用来查找xml节点的路径语言,一个路径字符串语法) XM ...
- MySQL 约束
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息: 约束主要完成对数据的检验,保证数据库数据的完整性:如果有相互依赖数据 ...
- SQLite使用教程3 数据类型
http://www.runoob.com/sqlite/sqlite-data-types.html SQLite 数据类型 SQLite 数据类型是一个用来指定任何对象的数据类型的属性.SQLit ...
- 【转】memcached工作原理介绍
FROM: http://my.oschina.net/flynewton/blog/8984 官方主页: http://memcached.org/ 面临的问题 对于高并发高访问的Web应用程序来 ...
- zoj 3823 Excavator Contest 构造
Excavator Contest Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/show ...
- Java下拼接运行动态SQL语句
mod=viewthread&tid=3039" target="_blank">Java拼接动态SQL的一般做法有 1.使用动态语句 非常多数 ...