将java代码从用户输入更改为命令行参数

时间:2015-03-02 00:29:00

标签: java command arguments

所以我正在开发一个将采用命令行参数的项目(例如:11:45:12 11:48:13)并以#34的形式输出;以秒为单位的经过时间为:181&#34; < / p>

虽然我很难将代码更改为要求用户启动&#34;启动&#34;通过按任意键来获取计时器,从命令行参数获取直接时间。非常感谢任何帮助!下面是我的两个类Clock和TestClock。 testClock是将使用命令行参数运行的。

    import java.sql.Time;

 public class Clock {
   public Time startTime;
   public Time endTime;

   Clock() {
   } public void start(String startTime){
       startTime.startTime(convertToSeconds(startTime));


   } public void stop(String endTime){
       endTime.setTime(convertToSeconds(endTime));
   }

import java.util.Scanner;


public class TestClock {
public static void main(String args[]){
    Clock cl = new Clock();
    cl.start(args[0]);
    cl.stop(args[1]);
    System.out.println("Time elapsed is " + cl.getElapsedTime() + " seconds");
}

}

无法找到仍然无法转换为秒的错误。与获得经过的时间相同。

3 个答案:

答案 0 :(得分:0)

删除System.in并使用args[0]args[1]args方法签名中的main()是一个命令行参数数组。

答案 1 :(得分:0)

您需要一种设置stopTimestartTime的方法。我建议创建另一个带两个字符串的构造函数。或者,您可以添加新的stopstart函数,以便进行设置。

然后,就像EvervOid所提到的那样,使用args参数中的相应位置来获取命令行参数并将它们传递给新的stopstart函数。 (您不需要删除已有的Java,因为Java很聪明,可以区分具有相同名称和不同参数的两个函数)。

最终的main函数可能类似于:

public class TestClock {
    public static void main(String args[]){
        Clock cl = new Clock(args[0], args[1]);
        System.out.println("Time elapsed is " + cl.getElapsedTime() + " seconds");
    }
}

编辑:每个评论问题

你可以有一个接受开始和结束时间的构造函数,如下所示:

   Clock(String startString, String endString) {
       startTime = new Time(convertToMilliseconds(startString));
       endTime = new Time(convertToMilliseconds(endString));
   }

您需要根据我提到的其他帖子编写转换函数。

另一种方法是将以下内容写入函数:

   public void start(String startTime){
       startTime.setTime(convertToMilliseconds(startTime));
       System.out.println("Start time is " + startTime);
   }

   public void stop(String endTime){
       endTime.setTime(convertToMilliseconds(endTime));
       System.out.println("End time is " + endTime);
   }

如果这样做,则主要功能变为:

public class TestClock {
    public static void main(String args[]){
        Clock cl = new Clock();
        cl.start(args[0]);
        cl.end(args[1]);
        System.out.println("Time elapsed is " + cl.getElapsedTime() + " seconds");
    }
}

答案 2 :(得分:0)

import java.sql.Time;
public class Clock {

   //Create two instance of Time class with default values
   //for hour,minute and seconds
   private Time startTime=new Time(0, 0, 0);
   private Time stopTime=new Time(0, 0, 0);



   //set start time
   public void start(Time startTime){
       this.startTime=startTime;
   }


   //set end time
   public void stop(Time stopTime){
       this.stopTime=stopTime;
   }



   /**The method getElapsedTime calculates the time difference
   * between two times and returns seconds as return value.
   * */
   public int getElapsedTime(){
       int totalSeconds=0;
       int hours=stopTime.getHours()-startTime.getHours();
       if(hours>0) {          
           int minues=stopTime.getMinutes()-startTime.getMinutes();
           if(minues>0) {
               minues=stopTime.getMinutes()-startTime.getMinutes();
           }
           else
               minues=startTime.getMinutes()-stopTime.getHours();

           int seconds=stopTime.getSeconds()-startTime.getSeconds();
           if(minues>0) {
               seconds=stopTime.getSeconds()-startTime.getSeconds();
           }
           else
               seconds=startTime.getSeconds()-stopTime.getSeconds();


           totalSeconds=hours*60*60+minues*60+seconds;
       }
       else {

           int minutes=stopTime.getMinutes()-startTime.getMinutes();
           if(minutes>0) {
               minutes=stopTime.getMinutes()-startTime.getMinutes();
           }
           else
               minutes=startTime.getMinutes()-stopTime.getMinutes();

           int seconds=stopTime.getSeconds()-startTime.getSeconds();
           if(seconds>0) {
               seconds=stopTime.getSeconds()-startTime.getSeconds();
           }
           else
               seconds=startTime.getSeconds()-stopTime.getSeconds();


           totalSeconds=hours*60*60+minutes*60+seconds;
       }
       //return seconds              
       return totalSeconds;
   }//end of the getElapsedTime method


}//end class

import java.sql.Time;
public class TestClock {
   public static void main(String[] args) {


       //Create an instance of Clock class object
       Clock clock=new Clock();      
       //Get first argument
       String startTime=args[0];

       //split the argument and get hour,minute and second
       String [] time=startTime.split(":");

       //split the argument and get hour,minute and second
       int hour=Integer.parseInt(time[0]);
       int minutes=Integer.parseInt(time[1]);
       int seconds=Integer.parseInt(time[2]);


       //call start method with an instance Time class
       clock.start(new Time(hour, minutes, seconds));

       //Get first argument
       String endTime=args[1];
       String [] stopTime=endTime.split(":");

       //split the argument and get hour,minute and second
       hour=Integer.parseInt(stopTime[0]);
       minutes=Integer.parseInt(stopTime[1]);
       seconds=Integer.parseInt(stopTime[2]);
       //call start method with an instance Time class
       clock.stop(new Time(hour, minutes, seconds));

       System.out.println("Elapsed time in seconds :"+clock.getElapsedTime());

   }//end main

}//end class