用substring()控制接循环
for(int i = 0 ; i < s.length()/5+1 ; i++)
{
if((i+1)*5 <s.length)
{
System.out.println(s.substring(i*5,(i+1)*5));
}
else
{
Systme.out.println(s.substring(i*5,s.length()));
}
}
for(int i = 0 ; i < s.length()/5+1 ; i++)
{
if((i+1)*5 <s.length)
{
System.out.println(s.substring(i*5,(i+1)*5));
}
else
{
Systme.out.println(s.substring(i*5,s.length()));
}
}
“aaaaaaaaaa”,因为这个时候他们的byte数是一样的,所以我想做的是在确定一行byte数的情况下自动换行打印,类如:
设定byte数 为 10,
字符串 “这是第aa一行的距离是aaaaaaaaaa” 就应该打印为
这是第aa一
行的距离是
aaaaaaaaaa
很郁闷,现在还没有想出方法
判断当前的byte是否为汉字的一部分,我用的是byty>255.不知道这样是否正确,反正我在这样应用的时候是没有问题的
{
public static void main(String[] args) throws Exception
{
String str = new String("这是第aa一行的距离是aaaaaaaaaa");
int len = str.length();
int sum = 0;
int temp = 0;
for (int i = 0; i < len; i++)
{
if ((int) str.charAt(i) >= 128)
{
sum += 2;
}
else
{
sum += 1;
}
if (sum % 10 == 0)
{
System.out.println(str.substring(temp, i + 1));
temp = i + 1;
}
}
}
}以上方法可以根据实际情况优化,但是有个问题如果你的byte数是奇数时,分离的结果会有乱码。
Font font = new Font("宋体", 0, 12);
label.setFont(font);
FontMetrics fm = label.getFontMetrics(label.getFont());
System.out.println(fm.stringWidth(label.getText()));-------------------------------
结果: 198
public class Newline
{
public static void main(String[] args) throws Exception
{
String str = new String("这是第12一行的距离是1234567890");
//String str = new String("这是第123一行的距离是1234567890");
//String str = new String("这是第1234一行的距离是1234567890");
int len = str.length();
int sum = 0;
int temp = 0;
for (int i = 0; i < len; i++)
{
if ((int) str.charAt(i) >= 128)
{
sum += 2;
}
else
{
sum += 1;
}
if (sum % 10 == 0)
{
System.out.println(str.substring(temp, i + 1));
temp = i + 1;
}
}
if (sum % 10 != 0)
{
System.out.println(str.substring(temp, len));
}
}
}