如题

解决方案 »

  1.   

    //Ott.java
    package onetwothree;
    class Ott {
    static int stone=21;
    static int winner=0;//this is kozi,0 means winner is PRO. 
    public static void main(String[] args)throws java.io.IOException{
      System.out.println("In the table,it has twenty-one stone.you can take up one,two or three stone.");
      System.out.println("The PRO is also,who take the last one,who win!");
      while(stone != 0){
       change_user();
       if(stone != 0){
       change_pro();
       }
      }
      if(winner == 0){
       System.out.println("The PRO is win!!!!!");
      }
      else{
       System.out.println("You win!!!!!,congrotelation to you!");
      }
    }
    static void change_user()throws java.io.IOException{
    int a = Reader.getint();
    if(a>3||a<=0){
    change_user();
    }else{

    if((stone - a)>=0){
      stone = stone - a;
      System.out.println("you take up:"+a);
      if(stone == 0){
      winner=1;
      }
    }
    else{
      change_user();
    }
    }
    }
    static void change_pro(){
    int a = stone % 4;
    if (a==0){
    int k =(int)((Math.random())*10);
    if(k<=4&&k>=0){
    a=1;
    }
     else{
     if(k>4&&k<=7){
      a=2;
     }
      else{
      a=3;
      }
    }
    stone = stone - a;
    System.out.println("The PRO take up:"+a);
    System.out.println("The stone is have:"+stone);
    }
    }
    }
    //Reader.java
    package onetwothree;
    import java.io.*;
    public class Reader  {
    public static int getint()throws java.io.IOException{

    String we = getString();
    Integer me = Integer.valueOf(we);
    int a = me.intValue();
    return a; 
    }
    public static double getdouble()throws java.io.IOException{
         
            String we = getString();
    Double me = Double.valueOf(we);
    double a = me.doubleValue();
    return a;
    }
    public static String getString()throws java.io.IOException{
        BufferedReader io = new BufferedReader(new InputStreamReader(System.in));
        String we = io.readLine();
    return we;
    }
    }
      

  2.   

    肯定是包路径的问题了,编译的时候要进入onetwothree文件夹位置,然后javac ott.java
      

  3.   

    java Ott时提示:
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\ccyjava.MY-TOMATO>e:E:\>cd onetwothreeE:\onetwothree>java Ott
    Exception in thread "main" java.lang.NoClassDefFoundError: Ott (wrong name: onet
    wothree/Ott)
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    该如何,我用ide可以运行,但我就想用命令行自己运行,我该如何?
      

  4.   

    初学java不要用ide,就用jdk,ide会屏蔽技术细节,比如你这个classpath的问题。java和c这样的语言不同,不是直接生成二进制吗的,class文件是中间代码,执行java时,jvm会用 ClassLoader来加载需要的中间代码,但问题在于,ClassLoader又怎么知道你自己编译完的class文件在哪里呢?于是就引入了classpath这个环境变量,你必须在classpath中配置你自己应用的类路径让application级别的ClassLoader来加载你自己的class文件。之所以用ide可以,是因为ide帮你把这件事情做了。你用命令行,windows的话去我的电脑->属性里设置classpath=.然后根据你上面给出的环境在e盘下(不要进入onetwothree文件夹)打java onetwothree.Ott