高分求救一道日本公司招聘JAVA程序员的JAVA上机题

来源:百度知道 编辑:UC知道 时间:2024/06/09 17:09:41
只有两天的时间了,下面题目:
编写一个截取字符串的程序,输入为一个字符串和需要字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如输入“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+’汉’的半个”。

你用getbyte() 获得字节数组,Java默认数unicode编码,每个字符都占两字节,无论是汉字还是英文字母

public class StringSpritTest {
public static void main(String []args){
String str="我ABC汉ABC";
System.out.println(intercept(str,8));
}

public static String intercept(String str, int bs){
//如果bs为0,没意思,直接退出
if(bs == 0 || str==null){
System.out.println("no");
return null;
}
//创建stringBuffer,用于返回截取的字符串
StringBuffer sb = new StringBuffer();
int length = str.length();//str的长度
int total = 0;//记录当前已经截取了的字节数
for(int i = 0; i < length; i++)
{
//取得要取得的字符,并保存为String
String s = str.substring(i, i+1);
//得到当前要截取的字符的字节长度
int temp = s.getBytes().length;
//如果已经截取的字节数+当前要截取的字符字节数的和大于
//需要的字节数(bs),退出循环
if(total + temp > bs){
break;
}
sb.append(s);//将当前字符添加到返回结果中
total += temp;//更新total
}
return sb.toString();