JAVA 一道关于字节的题

编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个
package com.huahua.java02;

import com.sun.org.apache.xml.internal.serializer.Method;

public class StringTest0 {
public static void method(String s,int a){
for(int i=0;i<a;i++){
if(s.substring(0,a).charAt(i)<=256){
a-=1;
}
}
System.out.println(s.substring(0,a+1));

}
public static void main(String args[]){
method("我a我我adgadf",4);
}
}
我这里怎么改好?
我自己修改后 还是哪有问题呢????
package com.huahua.java02;

import com.sun.org.apache.xml.internal.serializer.Method;

public class StringTest0 {
public static void method(String s,int a){

if(s.substring(0,a).charAt(s.substring(0,a).length()-1)>=250){
for(int i=0;i<a;i++){
if(s.substring(0,a).charAt(i)<=256){
a-=1;
}
}
a+=1;
}

System.out.println(s.substring(0,a));

}
public static void main(String args[]){
method("我a我我adgadf",4);
}
}

第1个回答  2009-08-03
public static String getSubString(String str, int subStrLen) {
if (str == null || subStrLen <= 0) {
return "";
}
byte[] strBytes = str.getBytes(); // 字节码数组

if ( subStrLen > strBytes.length) {
subStrLen = strBytes.length;
}
String subStr = new String(strBytes, 0, subStrLen);
// 最后一个如果只取到汉字低字节(它也占一个字符长度),那么最后的字符肯定与原来的不同,那么就放弃最后一个字符
if (subStr.charAt(subStr.length() - 1) != str.charAt(subStr.length() - 1)) {
subStr = subStr.substring(0, subStr.length() - 1);
}
return subStr;
}本回答被网友采纳
第2个回答  2009-08-03
楼上说的不对 要考虑的 要不会出现乱码
改你的 还不如我重新写一个呢
public class test {
public static String method(String s, int a) {
if (s == null)
return null;
for (int i = 0; i < s.length(); i++) {
String temp = s.substring(0, i);
if (temp.getBytes().length == a)
return temp;
if (temp.getBytes().length > a) {
return s.substring(0, i - 1);
}
}
return null;
}

public static void main(String[] args) {
String str = "我a我我adgadf";
for (int i = 1; i < 10; i++) {
System.out.println("截取" + i + "个字节:");
System.out.println(method(str, i));
}
}

}
第3个回答  2009-08-03
class Test {
public static void main(String[] args) {
String str = "按时abc我def不g";
//按4位截取
for (int i = 0; i < str.length() / 4 + 1; i++){
if (i*4+4 - str.length() > 0){
System.out.println(str.substring(i * 4,str.length()));
}else{
System.out.println(str.substring(i * 4, (i+1) * 4));
}
}
}
}
第4个回答  2009-08-03
不用考虑半角全角问题。

public static void method(String s, int a) {
for (int i = 0; i < a; i++) {
System.out.println(s.substring(0, i));
}

}

public static void main(String[] args) {
method("我a我我adgadf", 5);
}

---------------结果


我a
我a我
我a我我
第5个回答  2009-08-10
java中汉字也是一个字节 这是十分荒谬的回答,字节是内存中的储存单元,只是java迭代可将汉字当做一个字符元素,真正的储存机制还是两个字节。
相似回答