Just nu i M3-nätverket
Gå till innehåll

problem att köra Keyboard.readInt(); nybörjare


Martin.Hansson

Rekommendera Poster

Martin.Hansson

Jaha, satt mig i går efter inte programmerat på 5 år och skulle testa ett program ur läroboken från gymnasiet.

Gick ganska bra till en början, tyckte jag iallafall.

 

När jag kompilerar nedanstående kod säger den:

 

[log]

init:

deps-jar:

Compiling 1 source file to E:\java\Yatzy\build\classes

E:\java\Yatzy\src\yatzy\Main.java:145: ']' expected

int tärningVald[x] = Keyboard.readInt();

E:\java\Yatzy\src\yatzy\Main.java:148: ']' expected

int tärningVald[x] = Keyboard.readInt();

2 errors

BUILD FAILED (total time: 0 seconds)

 

 

eller som JDK Commander säger:

 

 

 

javac -d . -g -classpath . Main.java

 

Main.java:145: ']' expected

 

int tärningVald[x] = Keyboard.readInt();

 

^

 

Main.java:148: ']' expected

 

int tärningVald[x] = Keyboard.readInt();

 

^

 

2 errors

 

 

Tyckte det inte va så konstigt att läsa in några int till en array, men så händer detta. Lyckas inte komma förbi problemet.

 

All hjälp uppskattas // Martin

 

public class Main{

       static int[] tärningVärde = {1, 2, 3, 4, 5, 6};
       static int[] tärningSpara = {1, 1, 1, 1, 1, 1}; // 1 ny tärning 2 spara
       static int[] tärningVald = {0, 0, 0, 0, 0, 0};  // temporär array i spara metoden, vald tärningar att spare
       static int[] tabellVärde = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       static int[] tabellVald = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       static String[] tabell = {"Ettor         ", "Tvåor         ", "Treor         ", "Fyror         ", "Femmor        ", "Sexor         ", "Summa         ", "Bonus         ", "1 par         ", "2 par         ", "Tretal        ", "Fyrtal        ", "Liten stege   ", "Stor stege    ", "Kåk           ", "Chans         ", "YATZY         ", "SUMMA         "};
       static int i, r, k, x = 0;

   public static void main(String[] args) {

       System.out.println("");
       System.out.println("");
       System.out.println("yaaayaa Yatzy!");
       System.out.println("");        
       System.out.println("Av: Martin Hansson");
       System.out.println("");
       System.out.println("En spelare, fem tärningar, ett uppdrag");
System.out.println("- Hey Ho, Lets GO !!!!! -");
       System.out.println("");

       for(r = 0; r < 15; r++){

           for(k = 0; k < 3; k++){

               int[] tärningSpara = {1, 1, 1, 1, 1, 1};                  // nollställer vilka tärningar som är sparade
               kasta(k, tärningSpara, tärningVärde);
               spara(tärningSpara, tärningVald);

           }

           presenteraTabell(tabellVärde);
           fyllITabell(tabellVärde, tabellVald);
           presenteraTabell(tabellVärde);

       }


       //System.out.println("random" + (int) (1 + Math.random()*6));   // test


}


       static void presentation(String[] args) {



       }




       static void kasta(int k, int tärningSpara[], int tärningVärde[]) {
           System.out.println("Kastar tärningarna.....");
               if ( k == 0){
                   System.out.println("Första Kastet");

                   for(int i = 0; i < 5; i++){

                       if (tärningSpara[i] == 1){
                           tärningVärde[i] = (int) (1 + Math.random()*6);
                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i]);


                       }
                       else{

                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i] + " sparad från förra omgången");

                       }  


                   }

               }
               else if(k == 1){
                   System.out.println("Andra Kastet");

                   for(int i = 0; i < 5; i++){

                       if (tärningSpara[i] == 1){
                           tärningVärde[i] = (int) (1 + Math.random()*6);
                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i]);


                       }
                       else{

                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i] + " sparad från förra omgången");

                       }

                   }
               }
               else if(k == 2){
                   System.out.println("Tredje Kastet");

                   for(int i = 0; i < 5; i++){

                       if (tärningSpara[i] == 1){
                           tärningVärde[i] = (int) (1 + Math.random()*6);
                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i]);


                       }
                       else{

                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i] + " sparad från förra omgången");

                       }

                   }




               }


       }

       static void spara(int tärningSpara[], int tärningVald[]) {
           System.out.println("Välj vilka tärningar du vill spara genom att skriva nummer(flera? lägg till ett mellanslag) och avsluta med '0'");
           System.out.println("BTW: i nummerorning.... än så länge... xD");
           int tärningVald[x] = Keyboard.readInt();
           while (tärningVald[x] != 0){
               x++;
               int tärningVald[x] = Keyboard.readInt();
           }
           for (i = 0; i < 5; i++){

               if (tärningVald[i] == i){

                   tärningSpara[i] = 2;

               }

           }


       }


       static void presenteraTabell(int tabellVärde[]) {
           System.out.println("Presenterar tabellen");

           System.out.println("Resultat      Poäng");
           for(i = 0; i < 18; i++){
               System.out.println(tabell[i] + tabellVärde[i]);



           }
       }

       static void fyllITabell(int tabellVärde[], int tabellVald[]) {
           System.out.println("test fyllITabell");
       }    



}

 

Ja jag vet att koden ser konstig ut, och att ni har säkert andra jättebra lösningar. Uppskattar all kritik, är i det stadiet då jag håller på att lära mig om objekt och klasser. learning by doing.... Men som sagt Keybord.readInt();

[/log]

 

[inlägget ändrat 2006-12-06 11:09:13 av Maratonmannen]

Länk till kommentar
Dela på andra webbplatser

int tärningVald[x] = Keyboard.readInt();
while (tärningVald[x] != 0){
x++;
int tärningVald[x] = Keyboard.readInt();
}

 

För det första måste x deklareras och ges ett värde innan x används.

 

För det andra:

 

int tärningVald[x]

 

borde nog vara

 

tärningVald[x]

 

Sen förstår jag inte riktigt vad metoden spara() egentligen ska göra?

 

Sist: Du har deklarerat allt som "static". Det är väl iofs helt ok men ska du lära dig objektorienterat sätt så borde bara main()-metoden vara statisk.

 

Länk till kommentar
Dela på andra webbplatser

Martin.Hansson

static int i, r, k, x = 0;

jag ger x ett värde i början

 

med learning by doing menar jag, gör som kompilatorn säger, funkar det? kör på.

 

 

 

Angående vad spara egentligen gör,

tanken är att efter jag har fått 5 tärningar vill jag kunna välja att spara vissa till nästa kast. Då det handlade om spelet yatzy. Då får man skriva in tärningens nummer och avsluta med 0. Sedan ville jag läsa in dessa nummer och matcha dem mot tärningarna för att spara rätt tärning.

 

nu har jag prövat utan static i metoderna

 

oj oj oj. mycket fel här..

 

init:

deps-jar:

Compiling 1 source file to E:\java\Yatzy\build\classes

E:\java\Yatzy\src\yatzy\Main.java:45: non-static method kasta(int,int[],int[]) cannot be referenced from a static context

kasta(k, tärningSpara, tärningVärde);

E:\java\Yatzy\src\yatzy\Main.java:46: non-static method spara(int[],int[]) cannot be referenced from a static context

spara(tärningSpara, tärningVald);

E:\java\Yatzy\src\yatzy\Main.java:50: non-static method presenteraTabell(int[]) cannot be referenced from a static context

presenteraTabell(tabellVärde);

E:\java\Yatzy\src\yatzy\Main.java:51: non-static method fyllITabell(int[],int[]) cannot be referenced from a static context

fyllITabell(tabellVärde, tabellVald);

E:\java\Yatzy\src\yatzy\Main.java:52: non-static method presenteraTabell(int[]) cannot be referenced from a static context

presenteraTabell(tabellVärde);

E:\java\Yatzy\src\yatzy\Main.java:144: cannot find symbol

symbol : variable Keyboard

location: class yatzy.Main

tärningVald[x] = Keyboard.readInt();

E:\java\Yatzy\src\yatzy\Main.java:147: cannot find symbol

symbol : variable Keyboard

location: class yatzy.Main

tärningVald[x] = Keyboard.readInt();

7 errors

BUILD FAILED (total time: 0 seconds)

 

 

Tack på förhand // Martin

 

Länk till kommentar
Dela på andra webbplatser

Angående static, så här är det tänkt (otestat):

 

public class Main
{
 int variabel;
 public static void main(String args[])
 {
   new Main().doSomething();
 }
 void doSomething()
 {
   // Här kan man använda "variabel".
 }
}

 

Kan titta lite mer på koden senare.

 

Länk till kommentar
Dela på andra webbplatser

Martin.Hansson

Mitt problem har varit att anropa metoder med fält. Men det kommer med tiden.

 

Koden är inte så mycket att titta på, dåligt organiserad och antagligen en hel den fel. Ska prova ditt exempel. Återkommer med uppdaterad kod, kanske det funkar då :)

 

tack för hjälpen // Martin

 

Länk till kommentar
Dela på andra webbplatser

Martin.Hansson

Nu har jag städat koden lite, obs den är inte färdig, några tomma metoder som jag pysslar lite med nu.. Glöm den tidigare :)

 

Ser lite grötigt ut, copy paste:a den gärna i antekningar eller dyl. eller prova att kompilera.

 

Ser jättebra ut, ändrat en hel del. Dock kvarstår problemet med Keyboard.readInt();

 

nu säger kompilatorn:

 

[log]

init:

deps-jar:

Compiling 1 source file to E:\java\Yatzy\build\classes

E:\java\Yatzy\src\yatzy\Main.java:141: cannot find symbol

symbol : variable Keyboard

location: class yatzy.Main

tärningVald[x] = Keyboard.readInt();

E:\java\Yatzy\src\yatzy\Main.java:145: cannot find symbol

symbol : variable Keyboard

location: class yatzy.Main

tärningVald[x] = Keyboard.readInt();

2 errors

BUILD FAILED (total time: 0 seconds)

 

ska man importera någon keyboard klass eller?

Ja han tror att Keybord är en variabel i klassen Main. Men enligt boken ska detta fungera.

 

Tack så mycket för hjälpen om du vill titta på denna istället.

 

 

package yatzy;

public class Main
{
       int[] tärningVärde = {1, 2, 3, 4, 5, 6};                    // initzierade värden
       int[] tärningSpara = {1, 1, 1, 1, 1, 1};                    // 1 ny tärning 2 spara
       int[] tärningVald = {0, 0, 0, 0, 0, 0};                     // temporär array i spara metoden, vald tärningar att spare
       int[] tabellVärde = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       int[] tabellVald = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       String[] tabell = {"Ettor         ", "Tvåor         ", "Treor         ", "Fyror         ", "Femmor        ", "Sexor         ", "Summa         ", "Bonus         ", "1 par         ", "2 par         ", "Tretal        ", "Fyrtal        ", "Liten stege   ", "Stor stege    ", "Kåk           ", "Chans         ", "YATZY         ", "SUMMA         "};
       int i, r, k, x = 0;

   public static void main(String[] args)
   {


}


       void presentation(String[] args)
       {
           System.out.println("Yatzy!");
           System.out.println("");        

           for(r = 0; r < 15; r++)
           {
               for(k = 0; k < 3; k++)
               {
                   int[] tärningSpara = {1, 1, 1, 1, 1, 1};                  // nollställer vilka tärningar som är sparade
                   kasta(k, tärningSpara, tärningVärde);
                   spara(tärningSpara, tärningVald);

               }

               presenteraTabell(tabellVärde);
               fyllITabell(tabellVärde, tabellVald);
               presenteraTabell(tabellVärde);

           }
       }




       void kasta(int k, int tärningSpara[], int tärningVärde[])
       {
           System.out.println("Kastar tärningarna.....");
               if ( k == 0){
                   System.out.println("Första Kastet");

                   for(int i = 0; i < 5; i++){

                       if (tärningSpara[i] == 1)
                       {
                           tärningVärde[i] = (int) (1 + Math.random()*6);
                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i]);

                       }
                       else
                       {

                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i] + " sparad från förra omgången");

                       }  


                   }

               }
               else if(k == 1){
                   System.out.println("Andra Kastet");

                   for(int i = 0; i < 5; i++)
                   {

                       if (tärningSpara[i] == 1)
                       {
                           tärningVärde[i] = (int) (1 + Math.random()*6);
                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i]);


                       }
                       else
                       {

                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i] + " sparad från förra omgången");

                       }

                   }
               }
               else if(k == 2)
               {
                   System.out.println("Tredje Kastet");

                   for(int i = 0; i < 5; i++)
                   {

                       if (tärningSpara[i] == 1)
                       {
                           tärningVärde[i] = (int) (1 + Math.random()*6);
                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i]);


                       }
                       else
                       {

                           System.out.println("Tärning " + (i+1) +" : " + tärningVärde[i] + " sparad från förra omgången");

                       }

                   }


               }


       }

       void spara(int tärningSpara[], int tärningVald[])
       {
           System.out.println("Välj vilka tärningar du vill spara genom att skriva nummer(flera? lägg till ett mellanslag) och avsluta med '0'");
           System.out.println("BTW: i nummerorning.... än så länge... xD");
           tärningVald[x] = Keyboard.readInt();
           while (tärningVald[x] != 0)
           {
               x++;
               tärningVald[x] = Keyboard.readInt();
           }
           for (i = 0; i < 5; i++)
           {

               if (tärningVald[i] == i)
               {
                   tärningSpara[i] = 2;    
               }

           }


       }


       void presenteraTabell(int tabellVärde[])
       {
           System.out.println("Presenterar tabellen");

           System.out.println("Resultat      Poäng");
           for(i = 0; i < 18; i++){
               System.out.println(tabell[i] + tabellVärde[i]);



           }
       }

       void fyllITabell(int tabellVärde[], int tabellVald[])
       {
           System.out.println("fyllITabell");
       }
}

[/log]

 

[inlägget ändrat 2006-12-06 11:10:16 av Maratonmannen]

Länk till kommentar
Dela på andra webbplatser

[log]package yatzy;

 

public class Main

{

int[] tärningVärde = {1, 2, 3, 4, 5, 6}; // initzierade värden

int[] tärningSpara = {1, 1, 1, 1, 1, 1}; // 1 ny tärning 2 spara

int[] tärningVald = {0, 0, 0, 0, 0, 0}; // temporär array i spara metoden, vald tärningar att spare

int[] tabellVärde = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

int[] tabellVald = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

String[] tabell = {"Ettor ", "Tvåor ", "Treor ", "Fyror ", "Femmor ", "Sexor ", "Summa ", "Bonus ", "1 par ", "2 par ", "Tretal ", "Fyrtal ", "Liten stege ", "Stor stege ", "Kåk ", "Chans ", "YATZY ", "SUMMA "};

int i, r, k, x = 0;

 

public static void main(String[] args)

{

 

 

}

 

 

void presentation(String[] args)

{

System.out.println("Yatzy!");

System.out.println("");

 

for(r = 0; r < 15; r++)

{

for(k = 0; k < 3; k++)

{

int[] tärningSpara = {1, 1, 1, 1, 1, 1}; // nollställer vilka tärningar som är sparade

kasta(k, tärningSpara, tärningVärde);

spara(tärningSpara, tärningVald);

 

}

 

presenteraTabell(tabellVärde);

fyllITabell(tabellVärde, tabellVald);

presenteraTabell(tabellVärde);

 

}

}

 

 

 

 

void kasta(int k, int tärningSpara[], int tärningVärde[])

{

System.out.println("Kastar tärningarna.....");

if ( k == 0){

System.out.println("Första Kastet");

 

for(int i = 0; i < 5; i++){

 

if (tärningSpara == 1)

{

tärningVärde = (int) (1 + Math.random()*6);

System.out.println("Tärning " + (i+1) +" : " + tärningVärde);

 

}

else

{

 

System.out.println("Tärning " + (i+1) +" : " + tärningVärde + " sparad från förra omgången");

 

}

 

 

}

 

}

else if(k == 1){

System.out.println("Andra Kastet");

 

for(int i = 0; i < 5; i++)

{

 

if (tärningSpara == 1)

{

tärningVärde = (int) (1 + Math.random()*6);

System.out.println("Tärning " + (i+1) +" : " + tärningVärde);

 

 

}

else

{

 

System.out.println("Tärning " + (i+1) +" : " + tärningVärde + " sparad från förra omgången");

 

}

 

}

}

else if(k == 2)

{

System.out.println("Tredje Kastet");

 

for(int i = 0; i < 5; i++)

{

 

if (tärningSpara == 1)

{

tärningVärde = (int) (1 + Math.random()*6);

System.out.println("Tärning " + (i+1) +" : " + tärningVärde);

 

 

}

else

{

 

System.out.println("Tärning " + (i+1) +" : " + tärningVärde + " sparad från förra omgången");

 

}

 

}

 

 

}

 

 

}

 

void spara(int tärningSpara[], int tärningVald[])

{

java.util.Scanner s = new java.util.Scanner(System.in);

System.out.println("Välj vilka tärningar du vill spara genom att skriva nummer(flera? lägg till ett mellanslag) och avsluta med '0'");

System.out.println("BTW: i nummerorning.... än så länge... xD");

tärningVald[x] = s.nextInt();

while (tärningVald[x] != 0)

{

x++;

tärningVald[x] = s.nextInt();

}

for (i = 0; i < 5; i++)

{

 

if (tärningVald == i)

{

tärningSpara = 2;

}

 

}

 

 

}

 

 

void presenteraTabell(int tabellVärde[])

{

System.out.println("Presenterar tabellen");

 

System.out.println("Resultat Poäng");

for(i = 0; i < 18; i++){

System.out.println(tabell + tabellVärde);

 

 

 

}

}

 

void fyllITabell(int tabellVärde[], int tabellVald[])

{

System.out.println("fyllITabell");

}

}[/log]

 

Länk till kommentar
Dela på andra webbplatser

Martin.Hansson

det blev snabbt överkurs för mig. Ska kolla mer på Scanner klassen.

 

har bara massa engelsk litteratur, så det tar lite extra tid innan man greppar sammanhanget :)

 

tack för all hjälp

 

Länk till kommentar
Dela på andra webbplatser

Det var så lite så, tack för poängen :)

 

Scanner är en klass som ingår i Java 1.5 och då ska man förstås använda den. Själv har jag haft 3 års uppehåll med Java så man får hela tiden kolla upp om det har dykt upp nya grejer.

 

Du har väl JDK 1.5 (update 9 verkar vara den senaste)?

 

http://tinyurl.com/yhn3ee

 

(den blev för lång för Eforum annars, orginalet är https://sdlc5d.sun.com/ECom/EComActionServlet;jsessionid=5DD6441C6D284251E3198D24E8B19D64)

 

 

[inlägget ändrat 2006-11-17 00:16:25 av lizardKng]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...