can not find symbol

skaoson

Grünschnabel
Guten Tag,

Ich bin relativ mit der Javaprogrammierung.

Ich habe ein Code von einem Freund bekommen, ich kann den Code kompielieren und ich bekomme folgenen Fehler. Wenn ich die Klasse Uhr.java kompiliere bekomme ich diese Fehlern:

Uhr.java:13: cannot find symbol
symbol : class Zeiger
location: class uhr.Uhr
private static Zeiger sec, min, std;
^
Uhr.java:16: cannot find symbol
symbol : class ZiffernBlatt
location: class uhr.Uhr
private static ZiffernBlatt blatt;
^
Uhr.java:45: cannot find symbol
symbol : class ZiffernBlatt
location: class uhr.Uhr
blatt = new ZiffernBlatt(RADIUS);
^
Uhr.java:47: cannot find symbol
symbol : class Zeiger
location: class uhr.Uhr
sec = new Zeiger(RADIUS);
^
Uhr.java:48: cannot find symbol
symbol : class Zeiger
location: class uhr.Uhr
min = new Zeiger(RADIUS);
^
Uhr.java:49: cannot find symbol
symbol : class Zeiger
location: class uhr.Uhr
std = new Zeiger(RADIUS);
^
Uhr.java:58: package Zeiger does not exist
sec.setType(Zeiger.Typ.SEC);
^
Uhr.java:59: package Zeiger does not exist
min.setType(Zeiger.Typ.MIN);
^
Uhr.java:60: package Zeiger does not exist
std.setType(Zeiger.Typ.STD);
^
9 errors

ZiffernBlatt.java

Java:
public class ZiffernBlatt{
 
    public int RADIUS;
    private int matrix[][];
    
    public ZiffernBlatt(int r) {
 this.RADIUS = r;
 init();
    }
    
    private double[] drehen(int grad, int r){
 double x = 0;
 double y;
 double rad = grad * Math.PI/180;
 
 y = x*Math.sin(rad) + r*Math.cos(rad);
 x = x*Math.cos(rad) - r*Math.sin(rad);
 
 return new double[]{x,y};
    }
    
    private void init(){
 matrix = new int[60][4];
 for(int i = 0;i < 60; i++){
     matrix[i][0] = (int)drehen(i*6, RADIUS)[0] + (RADIUS);
     matrix[i][1] = (int)drehen(i*6, RADIUS)[1] + (RADIUS);
     if(i % 5 != 0) {
  matrix[i][2] = (int)drehen(i*6, RADIUS-7)[0] + (RADIUS);
  matrix[i][3] = (int)drehen(i*6, RADIUS-7)[1] + (RADIUS);
     } else {
  matrix[i][2] = (int)drehen(i*6, RADIUS-20)[0] + (RADIUS);
  matrix[i][3] = (int)drehen(i*6, RADIUS-20)[1] + (RADIUS);
     }
 }
    }
 
    public int[][] getCords() {
 return matrix;
    }
 
}

Zeiger.java

Java:
package uhr;

public class Zeiger{

    public int POS;
    private Typ type;
    public int RADIUS;
    
    
    enum Typ{
	SEC, MIN, STD
    }

    public Zeiger(int r) {
	this.RADIUS = r;
	init();
    }
    
    private void init(){
    }
    
    public double[] drehen(int grad, int r){
	double x = 0;
	double y;
	double rad = grad * Math.PI/180;

	y = x*Math.sin(rad) + r*Math.cos(rad);
	x = x*Math.cos(rad) - r*Math.sin(rad);
	
	return new double[]{x,y};
    }
    

    public void next(int pos) {
	switch(type){
	case SEC:
	    this.POS = (this.POS + pos) % 60000;
	    break;
	    
	case MIN:
	    this.POS = (this.POS + pos/60) % 60000; 
	    break;
	    
	case STD:
	    this.POS = (this.POS + pos/(60*12)) % 60000; 
	    break;
	}
    }
    

    public void setType(Typ type) {
	this.type = type;
    }
    

    public void setPos(int pos) {
	switch(type){
	case SEC:
	    this.POS = pos*1000;
	    break;
	    
	case MIN:
	    this.POS = pos*1000;
	    break;
	    
	case STD:
	    this.POS = pos*1000;
	    break;
	}
    }
    public int getX(double l){
	return -(int)drehen(POS*6/1000,(int)l)[0]+RADIUS;
    }
    
    public int getY(double l){
	return -(int)drehen(POS*6/1000,(int)l)[1]+RADIUS;
    }
}

Uhr.java

Java:
package uhr;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.GregorianCalendar;
import java.util.Calendar;


@SuppressWarnings("serial")
public class Uhr extends JPanel{

    private static Timer timer;
    private static Zeiger sec, min, std;
    private static final int RADIUS = 50;
    private static JFrame frame;
    private static ZiffernBlatt blatt;
    private static int zblatt[][];
    
    public static void main(String[] args) {
	frame = new JFrame("Uhr");
	new Uhr();
	
	frame.setBackground(Color.WHITE);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setSize(RADIUS*2+10, RADIUS*2+35);
	frame.setVisible(true);
	
	timer.start();
    }

    Uhr(){
	init();
	setTime();
	timer = new Timer(1000, new ActionListener(){
	    public void actionPerformed(ActionEvent e){
		sec.next(1000);
		min.next(1000);
		std.next(1000);
		frame.repaint();
	    }
	});
    }

    private void init(){
	blatt = new ZiffernBlatt(RADIUS);
	
	sec = new Zeiger(RADIUS);
	min = new Zeiger(RADIUS);
	std = new Zeiger(RADIUS);
	
	frame.add(this);
    }
    
    @SuppressWarnings("static-access")
    private void setTime(){
	Calendar c = new GregorianCalendar();
	
	sec.setType(Zeiger.Typ.SEC);
	min.setType(Zeiger.Typ.MIN);
	std.setType(Zeiger.Typ.STD);
	
	sec.setPos(c.get(c.SECOND));
	min.setPos(c.get(c.MINUTE));
	std.setPos(c.get(c.HOUR_OF_DAY) * 5 + c.get(c.MINUTE)/12);
    }

    public void paint(Graphics g){
	zblatt = blatt.getCords();
	for(int i = 0; i < 60; i++){
	    g.drawLine(zblatt[i][0], zblatt[i][1], zblatt[i][2], zblatt[i][3]);
	}
	g.setColor(Color.red);
	g.drawLine(RADIUS, RADIUS, sec.getX(RADIUS), sec.getY(RADIUS));
	g.setColor(Color.blue);
	g.drawLine(RADIUS, RADIUS, min.getX(RADIUS*0.8), min.getY(RADIUS*0.8));
	g.setColor(Color.green);
	g.drawLine(RADIUS, RADIUS, std.getX(RADIUS*0.5), std.getY(RADIUS*0.5));
    }
}
 
Vermutlich findet er die Klassen nicht, weil dein Projekt anders strukturiert ist, als es bei deinem Freund war. Wenn du alle Klassen im (default package) hast, dann versuche mal, was geschieht, wenn du die package-Anweisungen in den Kopfzeilen deiner Klassen auskommentierst.
 
Zurück