Compilatie en herkennings probleem

Status
Niet open voor verdere reacties.

pilotdavid

Nieuwe gebruiker
Lid geworden
23 mei 2009
Berichten
4
Beste,

geruime tijd heeft de java compiler goed gewerkt.
Nu is er wat raars aan de hand.

(1) Als ik een programma wil compileren, ook al is het programma 100% correct (dat weet ik van vorige keren), dan geeft de compiler alsnog errors aan en compiled hij niet. Heb de oude SDK (1.4xxx) eraf gegooid (die versie gebruiken we officieel bij mijn studie), en heb de nieuwste (1.6 update 13) geïnstalleerd.
Classpath en path gecontroleerd...alles staat goed.
Toch krijg ik weer dezelfde errors die totaal niet van toepassingen zijn op het programma dat ik wil compileren.

(2) Het volgende probleem houdt in dat in een programma dat ik gemaakt heb een standaarduitdrukking niet meer herkend wordt (in een online compiler, die wel goed werkt).

Code:
 // Assignment 5, part3, Telephonenumber format
 
 import java.io.*;
 import java.util.*;
 public class String {

	public static void main(String[] args) throws IOException {
		
		String phone;
		StringTokenizer st;
		int counter = 0;
		
		BufferedReader in1 = new BufferedReader(
									 new InputStreamReader(System.in));		
		
		// Aks for number of telephone numbers
		System.out.println("\nEnter telephone numbers in international format, seperated only by comma's:\n");
		phone = in1.readLine();
		
		// Showing the telephone numbers in a clean format table
		System.out.println("Country code	City code	Phonenumber");
		System.out.println("____________	_________	___________");
		
		st = new StringTokenizer(phone," +-\t\n\r\f");
		
		while (st.hasMoreTokens()) {
			for (int i = 0; i<4; i++) {
				System.out.print(st.nextToken() + "\t");
				counter++;
					if (counter == 3 ) {
						System.out.print(st.nextToken());
						System.out.println("");
						counter = 0;
					}
			}
		}
	}
}

De twee errors die ik krijg:

f/tmp/21814/String.java:18: incompatible types
found : java.lang.String
required: String
phone = in1.readLine();
^
/tmp/21814/String.java:24: cannot resolve symbol
symbol : constructor StringTokenizer (String,java.lang.String)
location: class java.util.StringTokenizer
st = new StringTokenizer(phone," +-\t\n\r\f");
^
2 errors

Enig idee iemand (de bovenstaande 2 problemen staan los van elkaar)?

Thanx,
David
 
Laatst bewerkt:
1)
Code:
public class String {
Noem je bestand anders want dit zorgt voor problemen
2)
Code:
import java.lang.String;
bovenaan invoegen
 
Laatst bewerkt:
Dank je!

Heb het bestand anders genoemd en het werkt (het programma zélf is nog niet helemaal top, maar dat is een ander verhaal).
Java importeert geloof ik automatisch de java.lang.* >> die was dus niet nodig...

Echter, het compilatie probleem heb ik nog: mijn compiler is niet helemaal in orde.
Classpath bevat ".;" en path is naar de bin directory van de java sdk gezet...

Toch krijg ik rare errors die onterecht aan correcte programma's worden toegewezen.
In de bijlage een screenshotje van het geval.

Beankt alvast!
David
 

Bijlagen

  • compile_error.png
    compile_error.png
    55,1 KB · Weergaven: 18
Laatst bewerkt:
Wel wat ik aan je screenshot zie is het volgende:
Je maakt een functie toString() aan op regel 36 . Zo'n functie bestaat al en ik stel voor dat je hem daarom anders noemt (to_String() bijvoorbeeld).

Verder post je aub eventjes je source want aan de andere foutmeldingen kan ik zo niet veel aan doen.
 
Het programma heeft betrekking op complexe getallen (een wiskundige methode om bepaalde getallen weer te geven).
Maar de inhoud heeft weinig met het probleem te maken, want het programma is 100% correct.
2 dagen geleden compilde java alles nog goed, nu compiled niet meer en geeft hij constant errors...
Met de compiler op een andere pc doet hij het namelijk wel.

*edit* Ik heb zojuist nog wat ontdekt, als ik het programma in de bin map van de sdk zelf kopieer, en dan compile, dan geeft java geen problemen.
Zou het dan toch met de path/classpath te maken hebben?

Voor de volledigheid nog even het programma (dat dus correct is):

Code:
// Class for storage and modification of complex numbers

import java.text.*;
public class Complex {
	
	private double real;
	private double imag;
	
	public Complex() {
		double real = 0.;
		double imag = 0.;
	}
	
	public Complex(double real, double imag) {
		setComplex(real,imag);
	}
	
	public void setComplex(double real, double imag) {
		this.real = real;
		this.imag = imag;
	}

	
	// Test for equality
	public boolean isEqual(Complex c) {
		boolean equal;
		if (real == c.real && imag == c.imag)
			equal = true;
		else
			equal = false;
		return equal;
	}
	
	// Format and output
	DecimalFormat df1 = new DecimalFormat("####.0");
	public String toString() {
		
		if (imag >= 0)
			return (df1.format(real) + "+" +df1.format(imag) + "i");
		else
			return (df1.format(real) + df1.format(imag) + "i");
	}
}
 
Laatst bewerkt:
Zou het kunnen dat je String.java nog in die folder heb staan ?
Hierdoor geraakt hij een beetje van de wijs vrees ik
Verder
Code:
	private double real;
	private double imag;
	private double real;
	public Complex() {
		double real = 0. ;
		double imag = 0.;
	}
Je maakt twee keer die variablen aan ik stel voor dit te veranderen in
private double real;
Code:
	private double imag;
	
	public Complex() {
		real = 0. ;
		imag = 0.;
	}
!! het volgende is muggezifterij
Code:
		boolean equal;
		if (real == c.real && imag == c.imag)
			equal = true;
		else
			equal = false;
		return equal;
kan je beter schrijven als

Code:
		if (real == c.real && imag == c.imag)
			return true;
		else
			return false;
omdat je die variable toch niet meer gebruikt.
William
 
Ja! Gelukt...inderdaad zat de String.java nog in de bin map.
Je moet ook alles volgens de kleine lettertjes doen anders doet java rare dingen :D

Dank je wel!
David
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan