JAVA输入字符,逆序输出字符的段子

楼主
JAVA输入字符,逆序输出字符的段子
[P][/P][P]            System.out.println("请输入字符并回车:");[/P][P]            String s = input.next();[/P][P]            int len = s.length(); //截取字符长度[/P][P]            String cut = "";[/P][P]            for(int i = len; i > 0; --i)//逆序输出吧..[/P][P]            cut += s.substring(i - 1, i); //截取字符到变量cut ?[/P][P]            System.out.print(cut); [/P][P][/P][P]后面几排我表示不理解怎么运作的...[/P][P]注释的对不..[/P][P]这是今天在网上抄的段代码[/P][P][/P][P][/P][P][/P]
1楼
[P]高级代码,看不懂看不懂。。呵呵。。[/P]
2楼
[QUOTE][b]下面引用由[u]ymjj[/u]发表的内容:[/b]
后面几排我表示不理解怎么运作的[/QUOTE]

虽然我平时并不用Java,但是这个极其简单的程序,我还是可以指导你一下的。
你所说的“后面几排”具体是指哪一行?

(LeadBBS论坛的“Code”标签可以标出代码的行号的。下次你把你的代码加上Code标签吧。)
3楼
[QUOTE][b]下面引用由[u]ymjj[/u]发表的内容:[/b]
后面几排我表示不理解怎么运作的...
注释的对不..
这是今天在网上抄的段代码[/QUOTE]

刚刚配了Java环境,顺便给你写个Demo。看过了你写的程序,基本上没有什么好的编程习惯。下面和你分享一下我写的代码。

[CODE]
/**
 * Input a string in command line and then revert it.
 */

import java.io.*;

/**
 * @author Yaping Xin
 * Main program
 */
public class Program {

     /**
      * @param args
      */
     public static void main(String[] args) {
           String inputStr = "";
           InputStreamReader inputStream = new InputStreamReader(System.in);
           BufferedReader reader = new BufferedReader(inputStream);
           
           try
           {
                 System.out.println("Please input a string in the below command line:");
                 inputStr=reader.readLine();
           }
           catch(IOException e)
           {
                 System.out.println("I/O error occurs!");
                 System.out.println(e.getMessage());
                 e.printStackTrace();
           }
           
           int inputLength = inputStr.length();
           
           if(inputLength > 0)
           {
                 StringBuilder sb = new StringBuilder(inputLength);
                 for(int index = inputLength - 1; index >= 0; index--)
                 {
                       sb.append(inputStr.charAt(index));
                 }
                 
                 String outputString = sb.toString();
                 
                 System.out.println("Revert the string above:");
                 System.out.println(outputString);
           }
     }

}

[/CODE]
4楼
关于注释:

其实一段写得合理的代码根本用不着这么多注释,注释只应出现在必要的地方。虽然我也反对基本没有注释的代码,但满篇都是注释也绝对是画蛇添足、喧宾夺主之举。


关于Java的字符串连接:

虽然我也不能说你的做法是错的,但是作为对Java最起码的了解,你应该知道,Java中String对象一旦构造则不可更改。那么,你的这种字符串连接的做法虽然也能得出正确的结果,但实际上效率奇差,虽然代码看上去很简洁,实际上在暗中不断地构造StringBuilder对象。

所以我索性在for循环之外构造一个StringBuilder对象,然后在for循环中不断地点用append()方法。虽然代码比你的长,但是运行效率远远比你的代码好。

关于Java的I/O:

很显然你还没有任何代码异常处理的意识。虽然我的代码明显比你的代码“啰嗦”,但是在工程实践中用的恰恰是我这种看似啰嗦实则安全的代码。记住,凡是有I/O操作的地方,就应该要想到有可能发生异常。


该给你推荐点文章了:

中文文章,请看:《全面解析Java中的String数据类型》
[URL=http://www.builder.com.cn/2007/0903/486176.shtml]http://www.builder.com.cn/2007/0903/486176.shtml[/URL]

英文文章,请看:《StringBuilder vs StringBuffer vs String.concat - done right》
[URL=http://kaioa.com/node/59]http://kaioa.com/node/59[/URL]
5楼
[P]猫爸,我还在初学阶段..[/P][P]你写的这段demo我又不能理解了[/P][P]我现在这个阶段 不能把语言灵活运用,还在学习阶段..思维也很混乱[/P][P](我想是这个北大青鸟造成的,目前他们只教最基本的东西,关于代码优化..嗨 我都感觉还没学好呢.乱七八糟的  我觉得我现在正处于学习的迷糊阶段 )[/P][P] [/P][P]等我够格做一名程序员的那时候再跟我严格要求吧,,我现在是要弄懂这些东西的[/P]

电脑版 Page created in 0.0312 seconds with 2 queries.