webForumDet fria alternativet

Fel i klassen

3 svar · 562 visningar · startad av reka1

reka1Medlem sedan sep. 2001650 inlägg
#1

Hej!
När jag kompilerar PublisherTest1.java får jag meddelandet:
PublisherTest1.java:7: cannot find symbol
symbol : constructor Publisher()
location: class Publisher
Publisher pub1 = new Publisher();
^
PublisherTest1.java:8: cannot find symbol
symbol : constructor Publisher()
location: class Publisher
Publisher pub2 = new Publisher();
^
PublisherTest1.java:9: cannot find symbol
symbol : constructor Publisher()
location: class Publisher
Publisher pub3 = new Publisher();
^

Bortkommenterar jag block 1 i Publisher.java fungerar PublisherTest1.java, men då fungerar ju ej PublisherTest2.java.
Har suttit i ett par timmar nu men kommer inte på vart felet ligger.

Publisher.java

//Uppgift 3 Övning 2 
public class Publisher
{
	// Instansvariabler
	private String name, address, phone;

/*	//Block 1
	// Konstruktor som ger alla instansvariabler dess värde
	public Publisher (String name, String address, String phone)
	{
		this.name = name;
		this.address = address;
		this.phone = phone;
	}
*/
	//Block 2
	// Metod för att sätta förlagsnamnet
	public void setName(String a)
	{
		name = a;
	}

	// Metod för att sätta adressen
	public void setAddress(String b)
	{
		address = b;
	}

	// Metod för att sätta tfnnr
	public void setPhone(String c)
	{
		phone = c;
	}

	// Metoder som returnerar namn, adress samt tfnnr
	public String getName()
	{
		return name;
	}
	
	public String getAddress()
	{
		return address;
	}

	public String getPhone()
	{
		return phone;
	}

	//Utskriftsmetoden
	public void print()
	{
		System.out.println("\nF”rlagets namn: "+getName());
		System.out.println("\nF”rlagets adress: "+getAddress());
		System.out.println("\nF”rlagets tfnnr: "+getPhone());
	}

	//toString-metoden
	public String toString()
	{
		return "F”rlagets namn „r: "+name;
	}
}

PublisherTest1.java

//Uppgift 3 Övning 2 
public class PublisherTest1
{
	public static void main(String[] args)
	{
	// Skapar tre objekt av klassen Publisher
	Publisher pub1 = new Publisher();
	Publisher pub2 = new Publisher();
	Publisher pub3 = new Publisher();

	// Sänder iväg data genom pub1, 2, 3 till "set-metoderna" i Publisher-klassen
	pub1.setName("Bonnier");
	pub1.setAddress("Ekorrstigen 4");
	pub1.setPhone("060-124578");

	pub2.setName("Ica");
	pub2.setAddress("Sveagatan 32");
	pub2.setPhone("076-4177412");

	pub3.setName("Konsum");
	pub3.setAddress("Tunagatan 12");
	pub3.setPhone("177-121212");

	// SKriver ut den insända datan genom print-metoden
	System.out.println("\nDet f”rsta f”rlagets data „r:");
	pub1.print();

	// Skriver ut insänd data som ligger lagrad i get-metoderna
	System.out.println("\nDet andra f”rlagets namn 	„r: "+pub2.getName() +". P† adress "+pub2.getAddress()+". Med tfnnr: "+pub2.getPhone());

	// Sluligen ännu en utskrift från print-metoden
	System.out.println("\nOch det sista f”rlagets info „r:");
	pub3.print();
	}
}

PublisherTest2.java

import java.io.*;
//Uppgift 3 Övning 2
public class PublisherTest2
{
	public static void main(String[] args) throws IOException
	{
	// Skapar variabler
	String name, phone;
	String address;

	// Skapar objektet buffertreader	
 	BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

	// Sätter värden i variablerna
	System.out.println("\nAnge f”rlagsnamn: ");
	name = input.readLine();

	System.out.println("\nAnge adress: ");
 	address = input.readLine();

	System.out.println("\nAnge tfnnr: ");
 	phone = input.readLine();
	

	// Skapar ett nytt objekt av klassen Publisher och sänder iväg variblernas värden
 	Publisher pub4 = new Publisher(name, address, phone);
	
	//Skriver ut insända värden med en toString-metod

	System.out.println(pub4.toString());

	}
}
SPiNMedlem sedan mars 20007 896 inlägg
#2

I PublisherTest1 försöker du skapa Publisher-objekt med en "no-arg"-konstruktor, men du har ingen sådan konstruktor definierad i Publisher-klassen.

Så antingen får du implementera en konstuktor som inte tar några parametrar (s.k. no-arg-kontstruktor), eller skriva om PublisherTest1 att skapa Publisher-objekt med tre parametrar (som den kräver i dagsläget).

reka1Medlem sedan sep. 2001650 inlägg
#3

Tack för hjälpen, Spin! Skapade först en no-arg-konstruktor med ingenting mellan måsvingarna. Trodde det var rätt, men testade sedan att lägga in this("... och då fungerade allt som det skulle
public Publisher ()
{
this("ok", "ok", "ok");
}

Trodde f.ö. att Java själv skapade en no-arg-konstruktor om ingen angetts, man lär sig något varje dag.

ercizMedlem sedan maj 20011 826 inlägg
#4

reka1 skrev:

Trodde f.ö. att Java själv skapade en no-arg-konstruktor om ingen angetts, man lär sig något varje dag.

Ja, Java skapar själv en no-arg-konstruktor, men bara om du inte skriver en egen konstruktor. Så nu när du har skapat en konstruktor med tre parametrar så skapar inte Java någon no-arg-konstruktor åt dig.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)