* 题目描述:输入一个字符串,长度是16的整数。
* 需要按照格式要求输出:
* 00000000 6162616465666768696a6b6c6d6e6f70 abcdefghijklmnop
* 00000010 7172737475767778797a7b7c7d7e7f80 qrstuvwxyzabcdef
当时做这个题的时间真的是太紧了,当时写了一遍代码,跑了一遍发现错了,都来不及改就只能提交了:
/**
*
*/
package dianer;
import java.util.Scanner;
/**
* @author LilyLee
* @date 2017年4月3日
* @time 下午8:16:36
* @Version 1.0
* @email lilylee_1213@foxmail.com
*
*/
/*
* 题目描述:输入一个字符串,长度是16的整数。
* 需要按照格式要求输出:
* 00000000 6162616465666768696a6b6c6d6e6f70 abcdefghijklmnop
* 00000010 7172737475767778797a7b7c7d7e7f80 qrstuvwxyzabcdef
*
* */
public class Tengxun {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str=in.nextLine();
Tengxun tx=new Tengxun();
tx.toAssid(str);
}
public void toAssid(String str){
int[] s=new int[str.length()];
String[] hh=new String[str.length()];
for(int i=0;i<str.length();i++){
s[i]=str.charAt(i);
hh[i]=Integer.toHexString(s[i]);
}
int len=str.length()/16;
String[] ss=new String[len*2];
for(int j=0;j<len;j++){
for(int k=0;k<16;k++){
ss[j]+=hh[k];}
}
for(int j=0;j<len;j++){
System.out.println("000000"+j+"0"+" "+ss[j]+" "+str.substring(j*16, (j+1)*16));}
}
}
现在来看看为什么会错,错在哪儿?
打了断点进去看了一下,问题是出在了这一句:
ss[j]+=hh[k];}
这里ss被初始化"null”,然后开始执行了 += 这个字符串拼接,所以就变成了 null616263.....
把这句话改了:
for(int j=0;j<len;j++){
ss[j]="";
for(int k=0;k<16;k++){
ss[j]+=hh[k];}
}
但是输出还是不对:
abcdefghijklmnopqrstuvwxyzabcdef
00000000 6162636465666768696a6b6c6d6e6f70 abcdefghijklmnop
00000010 6162636465666768696a6b6c6d6e6f70 qrstuvwxyzabcdef
再看看问题:
for(int k=0;k<16;k++){
ss[j]+=hh[k];}
hh后面的值没有赋给SS[j]
最后代码应该是:
/**
*
*/
package dianer;
import java.util.Scanner;
/**
* @author LilyLee
* @date 2017年4月3日
* @time 下午8:16:36
* @Version 1.0
* @email lilylee_1213@foxmail.com
*
*/
/*
* 题目描述:输入一个字符串,长度是16的整数。
* 需要按照格式要求输出:
* 00000000 6162616465666768696a6b6c6d6e6f70 abcdefghijklmnop
* 00000010 7172737475767778797a7b7c7d7e7f80 qrstuvwxyzabcdef
*/
public class Tengxun {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str=in.nextLine();
in.close();
Tengxun tx=new Tengxun();
tx.toAssid(str);
}
public void toAssid(String str){
int[] s=new int[str.length()];
String[] hh=new String[str.length()];
for(int i=0;i<str.length();i++){
s[i]=str.charAt(i);
hh[i]=Integer.toHexString(s[i]);
}
int len=str.length()/16;
String[] ss=new String[len];
for(int j=0;j<len;j++){
ss[j]="";
for(int k=j*16;k<(j+1)*16;k++){
ss[j]+=hh[k];}
}
for(int j=0;j<len;j++){
System.out.println("000000"+j+"0"+" "+ss[j]+" "+str.substring(j*16, (j+1)*16));}
}
}