Prosty kod a nie działa

0

Cześć, próbuję odpalić prosty kod z książki: Java, rusz głową. Nie mam kompletnie pojęcia dlaczego kod mi się nie uruchamia:

 package pies;


    

class Piesek{
    String imie;
    
     public void szczekaj()
        {
        System.out.println(imie + " szczeka: Hau Hau!!");
        }

   
    public static void main(String[] args) {
        Piesek pies1 = new Piesek();
        pies1.szczekaj();
        pies1.imie = "Azorek";
        
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek();
        mojePsy[3] = new Piesek();
        mojePsy[2] = new Piesek();

        
        mojePsy[0].imie = "Szarik";
        mojePsy[1].imie = "Cywil";
        
        System.out.print("Ostatni pies ma na imię");
        System.out.println(mojePsy[2].imie);
        
        int x = 0;
        while(x < mojePsy.length){
            mojePsy[x].szczekaj();
            x = x++;
        }
        
    }}

Wyskakuje błąd:

 run:
Error: Could not find or load main class pies.Pies
C:\Users\Kasper\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

XML:

 project name="{0} (run)" default="run" basedir=".">
    <target name="run">        
        <translate-classpath classpath="${classpath}" targetProperty="classpath-translated" />
        <property name="run.jvmargs" value="" />
        <property name="work.dir" value="${basedir}"/>
        <property name="application.args" value="" />
        <property name="java.failonerror" value="true"/>
        <java classpath="${classpath-translated}" classname="${classname}" dir="${work.dir}" jvm="${platform.java}" fork="true" failonerror="${java.failonerror}">
            <jvmarg value="-Dfile.encoding=${encoding}"/>
            <redirector inputencoding="${encoding}" outputencoding="${encoding}" errorencoding="${encoding}"/>
            <jvmarg line="${run.jvmargs}" />
            <arg line="${application.args}" />
            <syspropertyset>
                <propertyref prefix="run-sys-prop."/>
                <mapper from="run-sys-prop.*" to="*" type="glob"/>
            </syspropertyset>
        </java>
    </target>
</project>
0

Uruchamiasz z konsoli czy z IDE? Jak z konsoli, skompilowales wczesniej?

1

Package pies nie ma głównej klasy, pochrzaniłeś kod albo w książce jest błąd

0

Piesek.java

package pies;

public class Piesek {
    String imie;

    public void szczekaj()
    {
        System.out.println(imie + " szczeka: Hau Hau!!");
    }
}

Main.java

package pies;

public class Main {

    public static void main(String[] args) {
        Piesek pies1 = new Piesek();
        pies1.imie = "Azorek";
        pies1.szczekaj();


        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek();
        mojePsy[1] = new Piesek();
        mojePsy[2] = new Piesek();

        mojePsy[0].imie = "Szarik";
        mojePsy[1].imie = "Cywil";
        mojePsy[2].imie = "Burek";

        System.out.print("Ostatni pies ma na imię ");
        System.out.println(mojePsy[2].imie);
    }
}

Azorek szczeka: Hau Hau!!
Ostatni pies ma na imię Burek

Process finished with exit code 0
0

Przecież metoda main może być w klasie Pies. Mi się wydaję, że po prostu nie masz katalogu pies i w nim klasy Pies. Nie wiem jak tworzyłeś tą klasę, ale chyba tak, że dodaj klase, a później dopisałeś package pies. Jeśli nie umiesz czytać takich prostych błędów z IDE to powodzenia w nauce.

Btw. skąd wziąłeś ten plik xml? Netbeans automatycznie coś takiego generuje?

0

próbujesz uruchomic pies.Pies a w rzeczywistosci masz klasę Piesek, wiec nic dziwnego ze Ci jej nie znajduje.
Prawdopodobnie utworzyles projekt a pozniej zmieniles nazwe klasy.
W Netbeans wejdz w menu Run -> Set Project Configuration -> Customize i sprawdź czy jest ustawiona dobra klasa (MainClass). Jak nie to zmien na Piesek.

0
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek();
        mojePsy[3] = new Piesek();
        mojePsy[2] = new Piesek();

Skoro tworzysz tablicę trójelementową to co tam robi czwarty element?


x = x++;

W ten sposób pętla się zapętla.

Albo coś w książce pokopali, albo Ty źle przepisujesz.

A tu nieco inna wersja tego kodu:

 package pies;
 
class Piesek{
    private String imie;
    
    
 
     public Piesek(String imie) {
		this.imie = imie;
	}

	public void szczekaj()
        {
        System.out.println(imie + " szczeka: Hau Hau!!");
        }
 
    public static void main(String[] args) {
        Piesek pies1 = new Piesek("Azorek");
        pies1.szczekaj();
      
 
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek("Szarik");
        mojePsy[1] = new Piesek("Cywil");
        mojePsy[2] = new Piesek("Burek");
 
 
        System.out.print("Ostatni pies ma na imię ");
        System.out.println(mojePsy[2].imie);
 
        int x = 0;
        while(x < mojePsy.length){
            mojePsy[x].szczekaj();
            x++;
        }
 
   }
 } 

0

Stwórz folder pies, a w nim plik Piesek.java.
W Pliku Piesek.java pisz:

public class Piesek(...)

i kompiluj na "zewnątrz folderu pies":

javac pies/Piesek.java

1 użytkowników online, w tym zalogowanych: 0, gości: 1