个个关于“101我爱你”的字符串的显示输出问题 是这样一个题面,给你一个字符串比如:“101我爱你”要求写个调用此方法charStr("101我爱你",b),b为变量,b=1时输出3,b=3时输出101,b=4时输出101,b=5时输出101我。就这个意思!请高手给出解法,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样一个题面,给你一个字符串比如:“101我爱你”要求调用此方法charStr("101我爱你",b),b为变量,b=1时输出"1",b=3时输出"101",b=4时输出"101",b=5时输出"101我"。就这个意思!请高手给出解法,谢谢! MS没什么规律可言,直接用switch case?? -_-! package lihan;public class test { public void charStr(String b) { if(b.equals("1")) { System.out.println("3"); } if(b.equals("3")) { System.out.println("101"); } if(b.equals("4")) { System.out.println("101"); } if(b.equals("5")) { System.out.println("我"); } } /** * @param args */ public static void main(String[] args) { test t=new test(); t.charStr("1"); // TODO Auto-generated method stub }}可能我写得不是你要的 就是要把“101我爱你”中的数字作为占1个字节输入,我输入charStr("101我爱你",1),程序要输出显示“1”而中文要以正常的占2个字节输入,我输入charStr("101我爱你",5),程序要输出显示“101我”,我输入charStr("101我爱你",6),程序还要输出显示“101我”。 要通用一点的charStr(String str,int b). 楼主忘记了一件事情吧.java使用Unicode编码,一个字符都是2个字节.String对象里一个字符的位置肯定是占用2字节的喵~~`` class Test{ public static String charStr(String str,b){} public static void main(String[] args){ System.out.println(new Test().charStr("101我爱你",1)//输出:1 System.out.println(new Test().charStr("101我爱你",2)//输出:10 System.out.println(new Test().charStr("101我爱你",3)//输出:101 System.out.println(new Test().charStr("101我爱你",4)//输出:101 System.out.println(new Test().charStr("101我爱你",5)//输出:101我 System.out.println(new Test().charStr("101我爱你",6)//输出:101我 System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱 }}这个意思,能看明白了吧! class Test{ public static String charStr(String str,int b){} public static void main(String[] args){ System.out.println(new Test().charStr("101我爱你",1)//输出:1 System.out.println(new Test().charStr("101我爱你",2)//输出:10 System.out.println(new Test().charStr("101我爱你",3)//输出:101 System.out.println(new Test().charStr("101我爱你",4)//输出:101 System.out.println(new Test().charStr("101我爱你",5)//输出:101我 System.out.println(new Test().charStr("101我爱你",6)//输出:101我 System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱 } } 这个意思,能看明白了吧! package com.belstar.dbmodel;public class Test { public String splitIt(String str,int byteNum) { byte bt[] = str.getBytes(); /*测试语句 System.out.println("Length of this String ===>" + bt.length); for(int i = 0 ; i<bt.length;i++){ System.out.print(" "+bt[i]); } System.out.println("");*/ if(bt.length<=byteNum){//如果截取长度大于字段长度,那么不需截取,取全部即可 byteNum = -1; } if (byteNum > 1) { if (bt[byteNum] < 0) { int i=0; for(i=byteNum;i>=0&&bt[i]<0;i--);//取得非中午字符的位置 i = byteNum-i; if(i%2==0){ str = new String(bt, 0, --byteNum); }else{ str = new String(bt, 0, byteNum); } //System.out.println(str); } else { str = new String(bt, 0, byteNum); //System.out.println(str); } } else { if (byteNum == 1) { //截取单个字符,如果第一个字符是中文字符,那么就截取两个字节。即一个中文字,否则只截取一个字节 if (bt[byteNum] < 0) { str = new String(bt, 0, ++byteNum); } else { str = new String(bt, 0, byteNum); } } else { //需要截取的长度是负数,返回原字符串 } } return str; } public static void main(String[] args) { Test aaa=new Test(); String bbb= aaa.splitIt("101我爱你", 5); System.out.println(bbb); }} class Test{ public static String charStr(String str,int b){} public static void main(String[] args){ System.out.println(new Test().charStr("101我爱你",1)//输出:1 System.out.println(new Test().charStr("101我爱你",2)//输出:10 System.out.println(new Test().charStr("101我爱你",3)//输出:101 System.out.println(new Test().charStr("101我爱你",4)//输出:101 System.out.println(new Test().charStr("101我爱你",5)//输出:101我 System.out.println(new Test().charStr("101我爱你",6)//输出:101我 System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱 } } //希望高手能帮助完成public static String charStr(String str,int b){} 作用域内的代码。谢谢! 楼主没看我12楼的回复么,java使用unicode编码,字母、符号和汉字占用空间一样大,都是2个字节的.如果非要那样特殊处理,那么用汉字unicode编码区间去过滤一次. 好了谢谢大家啊,jyq0105的代码可以解决,我怎么结贴给你分呢! 试了下 好像String做不到放不到byte里 楼主哥你这题是不是C/C++的题啊? 要不就像6楼哥那样写死把 谁让java用的地Unicode码呢 要不在等等看有世外高人没~~ 抓墙的哥哥“jyq0105的代码可以解决”,你不防也试试,就不会抓墙了! 悬赏贴 音乐频谱 JAVA聊天室--昨天通过的口令验证出问题了,时间快到了求救~~ eclipse 用什么方法与SQL Server2005数据库中表格连接 设计计算器的布局管理器 ireport 中使用print when expression tomcat:reloading的问题? GPL协议的软件能否用作商业用途,GPL和LGPL之间是什么关系? 高分求助啦!!! Sun One Studio 调试 高手指点 大家一起来帮帮我 先谢谢了 关于异常的处理谁帮个忙啊
public void charStr(String b)
{
if(b.equals("1"))
{
System.out.println("3");
}
if(b.equals("3"))
{
System.out.println("101");
}
if(b.equals("4"))
{
System.out.println("101");
}
if(b.equals("5"))
{
System.out.println("我");
}
} /**
* @param args
*/
public static void main(String[] args) {
test t=new test();
t.charStr("1");
// TODO Auto-generated method stub }}
可能我写得不是你要的
而中文要以正常的占2个字节输入,我输入charStr("101我爱你",5),程序要输出显示“101我”,
我输入charStr("101我爱你",6),程序还要输出显示“101我”。
java使用Unicode编码,一个字符都是2个字节.
String对象里一个字符的位置肯定是占用2字节的喵~~``
public static String charStr(String str,b){}
public static void main(String[] args){
System.out.println(new Test().charStr("101我爱你",1)//输出:1
System.out.println(new Test().charStr("101我爱你",2)//输出:10
System.out.println(new Test().charStr("101我爱你",3)//输出:101
System.out.println(new Test().charStr("101我爱你",4)//输出:101
System.out.println(new Test().charStr("101我爱你",5)//输出:101我
System.out.println(new Test().charStr("101我爱你",6)//输出:101我
System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱
}
}
这个意思,能看明白了吧!
public static String charStr(String str,int b){}
public static void main(String[] args){
System.out.println(new Test().charStr("101我爱你",1)//输出:1
System.out.println(new Test().charStr("101我爱你",2)//输出:10
System.out.println(new Test().charStr("101我爱你",3)//输出:101
System.out.println(new Test().charStr("101我爱你",4)//输出:101
System.out.println(new Test().charStr("101我爱你",5)//输出:101我
System.out.println(new Test().charStr("101我爱你",6)//输出:101我
System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱
}
}
这个意思,能看明白了吧!
byte bt[] = str.getBytes();
/*测试语句
System.out.println("Length of this String ===>" + bt.length);
for(int i = 0 ; i<bt.length;i++){
System.out.print(" "+bt[i]);
}
System.out.println("");*/
if(bt.length<=byteNum){//如果截取长度大于字段长度,那么不需截取,取全部即可
byteNum = -1;
}
if (byteNum > 1) {
if (bt[byteNum] < 0) {
int i=0;
for(i=byteNum;i>=0&&bt[i]<0;i--);//取得非中午字符的位置
i = byteNum-i;
if(i%2==0){
str = new String(bt, 0, --byteNum);
}else{
str = new String(bt, 0, byteNum);
}
//System.out.println(str);
}
else {
str = new String(bt, 0, byteNum);
//System.out.println(str);
}
}
else {
if (byteNum == 1) {
//截取单个字符,如果第一个字符是中文字符,那么就截取两个字节。即一个中文字,否则只截取一个字节
if (bt[byteNum] < 0) {
str = new String(bt, 0, ++byteNum);
}
else {
str = new String(bt, 0, byteNum);
}
}
else {
//需要截取的长度是负数,返回原字符串
}
}
return str;
} public static void main(String[] args) {
Test aaa=new Test();
String bbb= aaa.splitIt("101我爱你", 5);
System.out.println(bbb);
}
}
public static String charStr(String str,int b){}
public static void main(String[] args){
System.out.println(new Test().charStr("101我爱你",1)//输出:1
System.out.println(new Test().charStr("101我爱你",2)//输出:10
System.out.println(new Test().charStr("101我爱你",3)//输出:101
System.out.println(new Test().charStr("101我爱你",4)//输出:101
System.out.println(new Test().charStr("101我爱你",5)//输出:101我
System.out.println(new Test().charStr("101我爱你",6)//输出:101我
System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱
}
}
//希望高手能帮助完成public static String charStr(String str,int b){} 作用域内的代码。谢谢!
java使用unicode编码,字母、符号和汉字占用空间一样大,都是2个字节的.如果非要那样特殊处理,那么用汉字unicode编码区间去过滤一次.
试了下 好像String做不到放不到byte里 楼主哥你这题是不是C/C++的题啊? 要不就像6楼哥那样写死把 谁让java用的地Unicode码呢 要不在等等看有世外高人没~~