所以我正在开发一个将采用命令行参数的项目(例如: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");
}
}
无法找到仍然无法转换为秒的错误。与获得经过的时间相同。
答案 0 :(得分:0)
删除System.in
并使用args[0]
和args[1]
。 args
方法签名中的main()
是一个命令行参数数组。
答案 1 :(得分:0)
您需要一种设置stopTime
和startTime
的方法。我建议创建另一个带两个字符串的构造函数。或者,您可以添加新的stop
和start
函数,以便进行设置。
然后,就像EvervOid所提到的那样,使用args
参数中的相应位置来获取命令行参数并将它们传递给新的stop
和start
函数。 (您不需要删除已有的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