一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 558|回复: 5
收起左侧

[编程题] int 数组可以接受char型的?

[复制链接] |试试Instant~ |关注本帖
TonyJang 发表于 2014-8-17 20:36:43 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 TonyJang 于 2014-8-17 20:45 编辑
  1. public class Q1_3_2{

  2. public static boolean TheSame(String s,String t){

  3. if(s.length()!=t.length()){
  4. return false;
  5. }
  6. int[] letters=new int[256];

  7. char[] s_array=s.toCharArray();   //不需要指定数组c的大小吗?
  8. for(char c:s_array){
  9. letters[c]++      //c是char,letters是int数组,匹配?
  10. }


  11. }
  12. for(int i=0;i<t.length()-1;i++){//length后面有括号
  13. int c=(int)t.charAt(i);

  14. if(letters[c]==0){
  15. return false;

  16. }

  17. letters[c]--;
  18. }


  19. return true;

  20. }





  21. public static void main(){
  22.         
  23.         
  24.         String s="abcdefg";
  25.         String t="gfdecab";
  26.         
  27.         if(TheSame(s,t)){
  28.                 System.out.println("Yes!");
  29.                 }
  30.         
  31.         else
  32.                
  33.                 System.out.println("No!");
  34.                
  35.         

  36. }
  37. }
复制代码
问题就是第八行和第十行:
char[] s_array=s.toCharArray();   //不需要指定数组c的大小吗?
for(char c:s_array){
letters[c]++      //c是char,letters是int数组,匹配?

评分

1

查看全部评分

withdark 发表于 2014-8-17 23:48:37 | 显示全部楼层
额,java几乎不会,但是你问的问题应该是很基础的问题。回答下,错了别喷:
1.不需指定,s.toCharArray() 应该就是返回一个char[] 数组的引用,这个数组已经是有大小了的, 你的char[] s_array就是个引用而已,指向s.toCharArray() 的产生那个数组的内存地址。(java里木有指针了,但是引用和指针应该没差太多)
2.其实char和int是可以互通的呀。char也就是字符,是有ascii码的,比如'a' 对应的ascii码就是97。然后字符的ascii码范围是0~255.你的int数组大小是256的,所以不用担心越界问题。
回复 支持 1 反对 0

使用道具 举报

DamienPooh 发表于 2014-8-18 01:17:17 | 显示全部楼层
楼上说的差不多了,我再补充一下第二点:
因为int能表示的数据大小比char类型要大,所以从char到int的类型转换不需要是显式的,但反过来就必须要显式转换了:
int a = 0;
char b = (char)a //ascii码为0的字符
另外letters[]虽然是int型数组,但c在这里只是index,所以跟它是什么类型的数组并没有关系。
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2014-8-18 02:26:07 | 显示全部楼层
这是java啊。当然不需要指定了。你声明数组的时候声明是不需要指定大小的,后面定义需要比如int[] A=new int[12].但是这个你不需要自己定义。  还有char可以自动cast成int的,就是0-255之间的一个int.
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2014-8-18 02:27:03 | 显示全部楼层
withdark 发表于 2014-8-17 23:48
额,java几乎不会,但是你问的问题应该是很基础的问题。回答下,错了别喷:
1.不需指定,s.toCharArray()  ...

回答得很好。不过这明显不是楼主的代码。。是他看别人的看不懂。
回复 支持 反对

使用道具 举报

Kimurate 发表于 2014-8-18 04:14:30 | 显示全部楼层
withdark 发表于 2014-8-17 07:48
额,java几乎不会,但是你问的问题应该是很基础的问题。回答下,错了别喷:
1.不需指定,s.toCharArray()  ...

ASCII 是 0~127吧。0~255是UTF-8
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-6 09:03

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表