中易网

大家都来看这个java程序好奇怪啊

答案:1  悬赏:80  
解决时间 2021-04-28 13:38
  • 提问者网友:喜遇你
  • 2021-04-27 20:23

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
class Clock extends JPanel implements ActionListener
{
 private int hour;
 private int minute;
 private int second;
 Clock()
 {
  Timer timer=new Timer(1000,this);
  timer.start();
 }
 protected void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  setCurrentTime();
  int clockRadius=(int)(Math.min(getWidth(),getHeight()*0.4));
  int xCenter=getWidth()/2;
  int yCenter=getHeight()/2;
  //画时间刻度盘
  g.drawOval(xCenter-clockRadius,yCenter-clockRadius,2*clockRadius,2*clockRadius);
  g.drawString("12", xCenter-5 , yCenter-clockRadius+12);
  g.drawString("9", xCenter-clockRadius+3, yCenter+5);
  g.drawString("3",xCenter+clockRadius-10,yCenter+3);
  g.drawString("6",xCenter-3,yCenter+clockRadius-3);
  //画秒针
  int sLength=(int)(clockRadius*0.8);
 
  int xSecond=(int)(xCenter+sLength*1);
  int ySecond=(int)(yCenter-sLength*0);
 // int xSecond=(int)(xCenter+sLength*Math.sin(15*6));
  //int ySecond=(int)(yCenter-sLength*Math.cos(15*6));

  g.setColor(Color.RED);
  g.drawLine(xCenter, yCenter, xSecond, ySecond);
  
 }
 public void actionPerformed(ActionEvent e)
 {
  repaint();
 }
 public void setCurrentTime()
 {
  Calendar cal=new GregorianCalendar();
  this.hour=cal.get(Calendar.HOUR_OF_DAY);
  this.minute=cal.get(Calendar.MINUTE);
  this.second=cal.get(Calendar.SECOND);
 }
}
public class Example9_11 extends JFrame{
 Example9_11()
 {
  Clock clock=new Clock();
  this.add(clock);
 }
 public static void main(String[] args)
 {
  Example9_11 f=new Example9_11();
  f.setTitle("时钟");
  f.setSize(300,250);
  f.setLocation(400,300);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setVisible(true);
 }
}
运行结果是

 

但把

int xSecond=(int)(xCenter+sLength*1);
  int ySecond=(int)(yCenter-sLength*0);
 // int xSecond=(int)(xCenter+sLength*Math.sin(15*6));
  //int ySecond=(int)(yCenter-sLength*Math.cos(15*6));

上面两句注销,下面两句的注销删掉

//int xSecond=(int)(xCenter+sLength*1);
 // int ySecond=(int)(yCenter-sLength*0);
 int xSecond=(int)(xCenter+sLength*Math.sin(15*6));
 int ySecond=(int)(yCenter-sLength*Math.cos(15*6));

结果又是

Math.sin(15*6)不等于1吗

Math.cos(15*6)不等于0吗

最佳答案
  • 二级知识专家网友:孤伤未赏
  • 2021-04-27 20:58
Math.sin(15*6). 那个90 不是弧度,这个只可以是弧度。对180 Math.PI 乘或者除 可以互相转换弧度和角度
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息