java算法面试题:编写一个截取字符串的函数,输…
2018-06-18 03:42:34来源:未知 阅读 ()
package com.swift; import java.util.Scanner; public class Hanzi_jiequ { public static void main(String[] args) { /* * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, * 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。 */ Scanner scan=new Scanner(System.in); while(true) { System.out.println("请输入一个带中文的字符串,和要截取的字节数:"); String str=scan.next(); int num=scan.nextInt(); byte[] buf=str.getBytes(); if(num<=buf.length) { System.out.println("输入正确,即将截取字符串..."); int times=0; for(int i=0;i<num;i++) { if(buf[i]<0) { times++; } } if(times%2==1) { num--; } String out=new String(buf,0,num);//字节转成字符串 System.out.println("截取的字符串是:"+out); System.out.println(); }else { try { throw new MyException("截取字节数超出字符串长度..."); } catch (MyException e) { e.printStackTrace(); } } } } } class MyException extends Exception{ public MyException(String msg) { super(msg); } }
字符串打散成字节之后输出的字节值变成了正数和负数,字符为一个正数,汉字为两个负数
所以为了不输出半个汉字,可以判断负数的个数,然后确定截取数到底是多少,通过new String(buf,0,len)的构造方法把字节转换成字符串
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- DES/3DES/AES 三种对称加密算法实现 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash