| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:推回问题
只看楼主 加入收藏
dary
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2009-11-22
结帖率:0
收藏
已结贴  问题点数:0 回复次数:6 
推回问题
下面这个程序中红色的 dd=5 到了 bb.write(a[dd+2])  那a[dd+2]不就是a[7]了吗 为什么不是超出范围 而是运行正常呢?
还有这个 aa.unread(cc);
         bb.write(a[dd]);   我就更不知道它是怎么个推回方法   哪位朋友能给我讲讲 谢谢了 最好举个列子 谢谢

import *;
public class PushBack {
    public static void main(String[]args) {
        char [] a ={'<','>','x','d','b','='};
        try {
            PushbackReader aa =new PushbackReader(new FileReader(args[0]));
            FileWriter bb =new FileWriter("__"+args[0]);
            int cc =0;
            while((cc=aa.read())!=-1) {
                int dd =-1;
                switch(cc) {
                    case '<' :
                        dd=0;
                        break;
                    case '>' :
                        dd=1;
                        break;
                    case '!' :
                        dd=2;
                        break;
                    case '=' :
                        dd=5;
                        break;
                    default :
                        bb.write(cc);
                }
                if(dd!=-1) {
                    if((cc=aa.read())=='=') {
                        bb.write(a[dd+2]);
                        bb.write(' ');
                    }
                    else {
                        aa.unread(cc);
                        bb.write(a[dd]);
                    }
                }
            }
            aa.close();
            bb.close();
        }
        catch(ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
}
         
   
搜索更多相关主题的帖子: 推回 
2009-11-24 16:31
dary
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2009-11-22
收藏
得分:0 
我是想让
1 + x >= 4
x + y <= 3
y + z != w
x + y > 3
x - y < 5
x - 1 = 6
变成
1 + x d  4
x + y x  3
y + z b  w
x + y > 3
x - y < 5
x - 1 = 6    这样

这个程序是对的  可我看了几天还是弄不懂怎么执行的。。
偶是新手  哪位不嫌麻烦给偶讲讲吧
2009-11-24 16:34
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:2 
数组没有越界,因为你的文档中没有出现“==”所以程序并没有执行a[7]



[ 本帖最后由 lampeter123 于 2009-11-25 10:27 编辑 ]

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2009-11-25 10:25
dary
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2009-11-22
收藏
得分:0 
aa.unread(cc);
bb.write(a[dd]);

这句是怎么实现的呢?  
<= 是怎么变成 x 的呢?
2009-11-25 16:30
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用dary在2009-11-25 16:30:56的发言:

aa.unread(cc);
bb.write(a[dd]);

这句是怎么实现的呢?  
<= 是怎么变成 x 的呢?
你自己调试下就知道啦,当读到“=”时,unread()可以理解成键盘的退格,指针返回“<="前面,并写入"x"

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2009-11-25 16:36
dary
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2009-11-22
收藏
得分:0 
谢谢 我调式了下  aa.unread(cc);
                 bb.write(a[dd]);
红色这句可以删掉
出来结果一样 是不是说unread 退回后 红色这句其实没运行?
还是它有其他什么作用呢?
2009-11-25 18:46
haizeng
Rank: 2
来 自:xdpsj.com
等 级:等待验证会员
帖 子:61
专家分:36
注 册:2009-11-30
收藏
得分:2 
恩 看看

[url=http://www./]石料生产线[/url]
[url=http://www.]破碎机[/url]
2009-11-30 09:35
快速回复:推回问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018913 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved