package interview.homework;public class HW212 {
String str;
int i;
public static void main(String[] args) {
HW212 hw = new HW212("我ABC汉DEF",6);
hw.metho();
}
public HW212(String str,int i) {
this.str = str;
this.i = i;
}
public void metho() {
int temp = ((str.length()%i) == 0)?(str.length()/i):(str.length()/i+1);
for(int i = 1; i <= temp; i++) {
if(i == temp) System.out.println(str.substring((i-1)*(this.i), str.length())); // 结果是:"EF" else System.out.println(str.substring((i-1)*(this.i), i*(this.i))); // 结果是:"我ABC汉D" }
}
}这道面试题目相信大家都已经看过,但是,"我ABC汉DEF",6 ,网络上的解答都是这样,与题目的所要求得到的结果不同...,不知道为什么??
一个汉字是两个字节,而一个英文字母只需一个字节就可以存储,因此按照题目的要求,不能把"汉"分割成两半,因此需要输出"我ABC",但是....?
String str;
int i;
public static void main(String[] args) {
HW212 hw = new HW212("我ABC汉DEF",6);
hw.metho();
}
public HW212(String str,int i) {
this.str = str;
this.i = i;
}
public void metho() {
int temp = ((str.length()%i) == 0)?(str.length()/i):(str.length()/i+1);
for(int i = 1; i <= temp; i++) {
if(i == temp) System.out.println(str.substring((i-1)*(this.i), str.length())); // 结果是:"EF" else System.out.println(str.substring((i-1)*(this.i), i*(this.i))); // 结果是:"我ABC汉D" }
}
}这道面试题目相信大家都已经看过,但是,"我ABC汉DEF",6 ,网络上的解答都是这样,与题目的所要求得到的结果不同...,不知道为什么??
一个汉字是两个字节,而一个英文字母只需一个字节就可以存储,因此按照题目的要求,不能把"汉"分割成两半,因此需要输出"我ABC",但是....?
解决方案 »
- 求高手指教关于abs()绝对值函数。
- 有什么好的方法可以比较方便的删除字符串中的<...>标记块?
- 用getElementsByTagName取xml子节点问题
- swing 布局问题
- applet中怎么弹出广告IE窗口?
- 谁能帮忙写段代码看看?题目不理解。。。
- 为何int len=InputStream.read(temp[],begin,length)不返回-1?
- Object类的equals方法和hashCode方法之间有什么关系?
- #######征集:想问问大家,都是用什么工具做java项目的安装程序的######
- 帮帮忙看看这段代码
- 列出101到200以内所有的质数出现问题
- jtable显示从db查询出来的数据??
length是字符串的字符个数。
str.length=8 i=6
所以temp = 8/6+1=2
打印出substring(6,8)所以就是EF了。
还有你的问题貌似有些问题,别用省略号,不知道你要说什么。
你可以用str的getChars(srcBegin, srcEnd, dst, dstBegin) 取数据到 char[] 中
然后从数组按照下标中来取你想要的
或者用str.charAt()
一个字符可以存储一个汉字,所以没什么问题.
int i;
str = "我ABC汉DEF";
i = 6;
str.length= 8;
temp = 8/6 + 1 = 2;
汉字和英文都是16位的。unicode.