免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4076 | 回复: 22
打印 上一主题 下一主题

接收已知数组,打印大小的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-24 18:36 |只看该作者 |倒序浏览
接收到了arr 如:int[] readarr = arr;  如下代码:

public static void read(int[] arr) {
               
        int[] readarr = arr;
        for (int i = 0; i < readarr.length; i++) {
                System.out.println(readarr);
        }
}

请问如何打印出arr中所有存在的数据,后面补0的数据不要。以上代码该怎样修改 ?
比如 arr 大小为 600,但是只有前100个有数据,后面的是0。(注:不能修改已知的arr)


[ 本帖最后由 夜夜呆 于 2006-5-24 18:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-05-24 18:49 |只看该作者
public static void read(int[] arr) {
               
        int[] readarr = arr;
        for (int i = 0; i < readarr.length; i++) {
                if(readarr [ i ] ! = 0){
                System.out.println(readarr [ i ] ) ;
                                        }
                                                                  }
                                                  }

论坛徽章:
0
3 [报告]
发表于 2006-05-24 23:48 |只看该作者
谢谢你的回帖....!
可是不通用.. 比如 "0000005555500000444411135480000978511....n" 这样该如何判断 ?

请问还有没有其他的通用写法 ?

[ 本帖最后由 夜夜呆 于 2006-5-24 23:50 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-05-25 00:55 |只看该作者
写一个方法判断后面的数据还是否有非零数据
再循环中每次打印前每次先判断一下就可

不过这样两重循环会很慢

论坛徽章:
0
5 [报告]
发表于 2006-05-25 02:59 |只看该作者
4楼的不科学,前面的0怎么解决?

论坛徽章:
0
6 [报告]
发表于 2006-05-25 03:42 |只看该作者
换一个思路,很简单啊,不要总是从头开始,也可以从尾开始啊,找到最末的那个有效位置就可以了啊
int lastpos = 0;
for (int i = readarr.length-1; i >=0; i--) {
{
    if(readarr!=0)
    {
       lastpos = i;
       break;
    }
}

然后再
for(int i=0;i<=lastpos;i++)
{
...
}

[ 本帖最后由 perryhg 于 2006-5-25 03:43 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-05-25 10:19 |只看该作者
原帖由 夜夜呆 于 2006-5-25 02:59 发表
4楼的不科学,前面的0怎么解决?


请问如何打印出arr中所有存在的数据,后面补0的数据不要


这个。。。不是说后面补的0不要么?前面的应该要阿~

p班的更好,我一开始没想到,笨了

论坛徽章:
0
8 [报告]
发表于 2006-05-25 12:13 |只看该作者
原帖由 perryhg 于 2006-5-25 03:42 发表
换一个思路,很简单啊,不要总是从头开始,也可以从尾开始啊,找到最末的那个有效位置就可以了啊
int lastpos = 0;
for (int i = readarr.length-1; i >=0; i--) {
{
    if(readarr!=0)
    {
      ...


思路活跃呢

论坛徽章:
0
9 [报告]
发表于 2006-05-25 13:12 |只看该作者
原帖由 xxjoyjn 于 2006-5-24 18:49 发表
public static void read(int[] arr) {
               
        int[] readarr = arr;
        for (int i = 0; i < readarr.length; i++) {
                if(readarr [ i ] ! = 0){
    ...



不要笑小弟我,看了之后想不明白为什么没法实现!
请高手明说!

论坛徽章:
0
10 [报告]
发表于 2006-05-25 13:22 |只看该作者
看我的,

public static void read(int[] arr) {
        boolean bCut = true;
        for (int i = arr.length - 1, j = 0; i >= 0; i--) {
                bCut = arr == 0 && bCut ? true : false;
                if (!bCut) {
                        System.out.println(arr[j++]);
                }
        }
}


楼上的怎么不明白呢, 你执行一下我的这个.就知道了.

public static void main(String[] args) {
        int[] arr = new int[10];
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 0;
        arr[3] = 3;
        arr[4] = 0;
        arr[5] = 0;
        arr[6] = 0;
        arr[7] = 0;
        arr[8] = 0;
        arr[9] = 0;
        read(arr);
}

[ 本帖最后由 zw_ren 于 2006-5-25 13:24 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP