Topic: java 基础 的经典问题。(DOS, command)

  Print this page

1.java 基础 的经典问题。(DOS, command) Copy to clipboard
Posted by: develop8
Posted on: 2006-05-29 07:54

/*this class can search defined char.
this class receive commandline argument(命令行参数)*/

class search{
public static void main(String[] args){
char c;
Character c2;
String sc=Character.toString(args[0].charAt(0));
for(int i=1;i<10000;i++){
if (i==7) continue;
c= (char)i;
c2 = new CharacterCoffee;
if(sc.equals(c2.toString())){
System.out.print(i+": "+c);
//System.exit(0);
}
}// end of loop.

}// end of main.
}
/*以下是在中文的命令行里的调试结果:
bug出在当你用参数*的时候,当你以下输入:
java search *
系统输出 : 97: a
当你用*带头的任何字符:出来*a。
都会正确显示:42:*
这是为什么啊?
String 转为字符的时候,丢失数据吗?
还有当你输入 java search &
系统认不出是它是字符串,这是为什么啊?
请帮我分析什么原因好吗?????????????
更希奇的是当你输入:
java search ^
DOS 会提示 More?
然后我输入别的一个字符,程序正常运行,
More? 在DOS里这是什么意思:
在什么情况下出现这个提示?
还有我注释掉的System.exit(0);是否有用,我想用这个语句的
意思是,当找到要找的结果后结束,循环,当不用这个语句的话
程序会继续进行直到循环结束吗?
还有谁知道 中文的命令行(cmd)和 英文的命令行(command)的区别?
以上我问了这么多?不知道那位高手能对答如流?
如果都能答出来,那他肯定是对系统了解很深的人,请耐心的
高手帮我解答好吗?如果不想公开答案:可以发到我的email:
foreverzr6x6@yahoo.com.cn
也许有的不懂英语的人会说我,邮箱名都起那么复杂的名字,
可是其实不复杂,因为有规律的:forever+zr+6x6=foreverzr6x6.
*/

2.Re:java 基础 的经典问题。。。 [Re: develop8] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-05-29 15:15

首先声明,我很少在cmd下面编译java文件。所以,在尝试这样编译的时候,出现了这样的问题:
我把search文件,放在e:\目录下:
E:\javac search.java
没问题,e:\下产生一个class文件。但我在输入这个命令的时候,抛出异常了:
E:\java search *
异常名为java.lang.NoClassDefFoundError,我也尝试在serach前面加了路径(即:java e:\search *),没效果。好吧!我妥协。(有经验的朋友提醒一下我出的问题)
将程序改成这个样子(我使用Eclipse):
package help;

import java.io.*;

public class search {
  public static void main(String[] args) {
    char c;
    Character c2;
    BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
    String sc = "";
    try{
      sc = buff.readLine();
    }catch(IOException e){
      System.out.printlnEnvelope;
    }
    for (int i = 1; i < 10000; i++) {
      if (i == 7)
        continue;
      c = (char) i;
      c2 = new CharacterCoffee;
      if (sc.equals(c2.toString())) {
        System.out.print(i + ": " + c);
        System.exit(0);
      }
    }
  }
}
你在后台输入任何字符都能正常显示。
注:为什么当i等于7时,停止迭代——7对应的字符为空格。
如果注释了System.exit(0)语句,整个程序将在运行10000次迭代后结束,效率低下。而作者的想法是,在找到改字符对应的ascii值后结束。注释掉,没必要。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923