第三题:
import java.io.*;public class SplitString
{
private int byteNum;
private String split;
public SplitString(String s,int Byte)
{
split=s;
byteNum=Byte;
}
public void Split()
{
byte[]num=split.getBytes();
//取得字节数,两个字节的编码构成一个汉字,且其内码为负值;
int i=num.length;
if(byteNum>=i) System.out.println(split);
else
if(byteNum==1)
{
if(num[byteNum-1]<0)
{
System.out.println(new String(num,0,byteNum+1));
}
else
System.out.println(new String(num,0,byteNum));
}
else if(byteNum>1)
{
if(num[byteNum-1]<0)
{
if(num[byteNum-2]<0)
System.out.println(new String(num,0,byteNum-2));
else
System.out.println(new String(num,0,byteNum-1));
}
else
System.out.println(new String(num,0,byteNum));
}
}
public static void main(String []args)
{
SplitString aa=new SplitString("我123汉",6);//输入字符串和字节数
aa.Split();
}
}
import java.io.*;public class SplitString
{
private int byteNum;
private String split;
public SplitString(String s,int Byte)
{
split=s;
byteNum=Byte;
}
public void Split()
{
byte[]num=split.getBytes();
//取得字节数,两个字节的编码构成一个汉字,且其内码为负值;
int i=num.length;
if(byteNum>=i) System.out.println(split);
else
if(byteNum==1)
{
if(num[byteNum-1]<0)
{
System.out.println(new String(num,0,byteNum+1));
}
else
System.out.println(new String(num,0,byteNum));
}
else if(byteNum>1)
{
if(num[byteNum-1]<0)
{
if(num[byteNum-2]<0)
System.out.println(new String(num,0,byteNum-2));
else
System.out.println(new String(num,0,byteNum-1));
}
else
System.out.println(new String(num,0,byteNum));
}
}
public static void main(String []args)
{
SplitString aa=new SplitString("我123汉",6);//输入字符串和字节数
aa.Split();
}
}
能说一下不
import java.io.*;public class SplitString
{
private int byteNum;//分割的字节数
private String split;//将要分割的字符串
private int oddnum=0; public SplitString(String s,int Byte)
{
split=s;
byteNum=Byte;
} public void Split()
{
byte[]num=split.getBytes();
//取得字节数,两个字节的编码构成一个汉字,且其内码为负值;
//String .getBytes()返回一个byte[]类型的变量,其内容为String的每个字符的ASCII码,其中
//汉字为2个字节的编码,均为负值。 int i=num.length;
for(int j=0;j<i;j++)
{
System.out.println(num[j]);
} if(byteNum>=i)
System.out.println(split);//如果要求的字节数目超过了该字符串的字节数目,则输出原字符串
else if(byteNum==1)
{
//如果要求截断的字节数为1,首先判断getBytes()得到的数组的第一个元素是正还是负
if(num[byteNum-1]<0)
{
System.out.println(new String(num,0,byteNum+1));
}
else
System.out.println(new String(num,0,byteNum));
}
else if(byteNum==2)
{
if(num[1]<0)
{
if(num[0]<0)
{
System.out.println(new String(num,0,2));
}
else
{
System.out.println(new String(num,0,1));
}
}
else
{
System.out.println(new String(num,0,2));
}
}
else if(byteNum>2)
{
//如果要求截断的字节数大于1
if(num[byteNum-1]<0)
{
if(num[byteNum]<0)
{
//判断从0到第byteNum-1的负值的个数是奇数还是偶数
for(int j=0;j<byteNum;j++)
{
if(num[j]<0)
{
oddnum++;
}
}
System.out.println("oddnum is "+oddnum);
if(oddnum%2==0)
{ System.out.println(new String(num,0,byteNum));
}
else
{
System.out.println(new String(num,0,byteNum-1));
}
}
else
{
System.out.println(new String(num,0,byteNum));
}
}
else
System.out.println(new String(num,0,byteNum));
}
} public static void main(String []args)
{
SplitString aa=new SplitString("我1是谁123汉",3);//输入字符串和字节数
aa.Split();
}
}