저는 현재 StandardPen 클래스를 사용하는 자바 시계에서 작업하고 있습니다. 프로그램을 실행하는 동안 내가 약 6-10 분에 도달 할 때를 제외하고는 모든 것이 올바르게 작동하는 것 같습니다. 시계가 고장났습니다. 나는 시침을 추가 한 직후 오류가있는 것으로 보인다. 시침이 초침과 분침과 다른 코드 인 이유는 thread.sleep (20)이 시침의 속도로 작업 할 수 없기 때문입니다. 누군가 제발 나를 빨리 도와주세요.왜 시계가 완벽하게 작동하지 않습니까?
import java.awt.Color;
import TurtleGraphics.StandardPen;
public class Clock_Final {
public static void main(String[] args) {
StandardPen pen = new StandardPen();
double num=90, num1 = 90, num3 = 90, loop = 1, minute = 90, minuteclear = 90, cont = 0, cont2 = 0, tick1 = 90, hour = 90, hourclear = 90, hourcount = 0, hourcount1 = 0;
String three = "3", six = "6", nine = "9", twelve = "12", signature = "Created by: Me";
pen.setColor(Color.black);
pen.up();
pen.setDirection(270);
pen.move(350);
pen.setDirection(180);
pen.move(60);
pen.drawString(signature);
pen.down();
pen.home();
//twelve
pen.setColor(Color.black);
pen.up();
pen.setDirection(90);
pen.move(280);
pen.setDirection(180);
pen.move(7);
pen.down();
pen.drawString(twelve);
pen.home();
//three
pen.up();
pen.setDirection(0);
pen.move(278);
pen.setDirection(270);
pen.move(5);
pen.down();
pen.drawString(three);
pen.home();
//six
pen.up();
pen.setDirection(270);
pen.move(290);
pen.setDirection(180);
pen.move(3);
pen.down();
pen.drawString(six);
pen.home();
//nine
pen.up();
pen.setDirection(180);
pen.move(285);
pen.setDirection(270);
pen.move(5);
pen.down();
pen.drawString(nine);
pen.home();
//_-_-_outside of the clock (the circle)
for (cont = 0; cont < 360; cont++) {
pen.setColor(Color.black);
pen.setDirection(num);
pen.setWidth(8);
pen.up();
pen.move(270);
pen.down();
pen.move(2);
pen.home();
num--;
if (num==0) {
num = 360;
}
}
//tick start
for (cont2=0;cont2<60;cont2++) {
pen.setColor(Color.gray);
pen.setDirection(tick1);
pen.setWidth(3);
pen.up();
//method for minute/second ticks (start)
if (tick1 == 0 || tick1 == 30 || tick1 == 60 || tick1 == 90 || tick1 == 120 || tick1 == 150 || tick1 == 180 || tick1 == 210 || tick1 == 240 || tick1 == 270 || tick1 == 300 || tick1 == 330) {
if (tick1 == 0 || tick1 == 90 || tick1 == 180 || tick1 == 270) {
pen.setColor(Color.black);
pen.setWidth(5);
pen.move(225);
pen.down();
pen.move(39);
pen.setColor(Color.gray);
} else {
pen.setColor(Color.darkGray);
pen.move(230);
pen.down();
pen.move(34);
pen.setColor(Color.gray);
}
} //method for minute ticks (end)
else if (tick1 != 0 || tick1 != 30 || tick1 != 60 || tick1 != 90 || tick1 != 120 || tick1 != 150 || tick1 != 180 || tick1 != 210 || tick1 != 240 || tick1 != 270 || tick1 != 300 || tick1 != 330) {
pen.move(250);
pen.down();
pen.move(14);
}
pen.home();
if (tick1 == 0) {
tick1 = 360;
}
tick1 = tick1 - 6;
}
while (loop == 1) {
pen.setWidth(2);
//draw new second hand
pen.setColor(Color.red);
pen.setDirection(num1);
pen.move(220);
if (num1 < .05) {
num1 = 360;
}
num1 -= .3;
//draw new minute hand
pen.home();
pen.setColor(Color.darkGray);
pen.setDirection(minute);
pen.move(200);
if (minute == 1) {
minute = 360;
}
minute -= .005;
//draw new hour hand
pen.home();
pen.setColor(Color.darkGray);
pen.setDirection(hour);
pen.move(160);
if (hour == 0) {
hour = 360;
}
hourcount+=.05;
if (hourcount % 360 == 0) {
hour -= 1;
}
//sleep
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
//clear old second hand
pen.home();
pen.setColor(Color.white);
pen.setDirection(num3);
pen.move(220);
if (num3 < .05) {
num3 = 360;
}
num3 -= .3;
pen.home();
//clear old minute hand
pen.home();
pen.setColor(Color.white);
pen.setDirection(minuteclear);
pen.move(200);
if (minuteclear == 0) {
minuteclear = 360;
}
minuteclear -= .005;
pen.home();
//clear old hour hand
pen.home();
pen.setColor(Color.white);
pen.setDirection(hourclear);
pen.move(160);
if (hourclear == 0) {
hourclear = 360;
}
hourcount1+=.05;
if (hourcount1 % 360 == 0) {
hourclear -= 1;
}
pen.home();
}
}
}
참고로, 성가신 오래된 날짜 - 시간의 수업을 ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html), ['java.util.Calendar'] (https : /) /docs.oracle.com/javase/9/docs/api/java/util/Calendar.html) 및'java.text.SimpleDateFormat'은 이제 [legacy]입니다 (https://en.wikipedia.org/wiki/). Legacy_system), int가 내장 된 [java.time] (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html) 클래스로 대체되었습니다. o Java 8 및 Java 9. [Tutorial by Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html)을 참조하십시오. –
음, 2014 년 1 월에이 답변을 올렸습니다. – slipperyseal
내 의견은 비판이 아니며 오늘의 독자들에게만 남습니다. –