jeudi 26 février 2015

Java - cannot find symbol cards or non-static method erase(int[],int[]) cannot be referenced from static context [duplicate]




This question already has an answer here:




Hi there I have one of two problems. when I try to access the function below ,which is in an object, from a function in the main class called erase(int[], int[]), I get cannot find symbol, can someone explain how I achieve what I intended.


Function in object called cards: public void setCard(int position){ System.out.println(" Value before erase: " + this.pack[position] + " Position value: " + position); this.pack[position] = 0; System.out.println(" Value after erase: " + this.pack[position] + " Position value: " + position); }


Main code:



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package war;
import war.cards;
import war.player;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author Jared
*/
public class War {
Scanner readLine = new Scanner(System.in);
Random rand = new Random();
int[] pack = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13};
cards clubs = new cards(pack);
cards spades = new cards(pack);
cards hearts = new cards(pack);
cards diamonds = new cards(pack);
/**
* @param args the command line arguments
*/
public static void main(String[] args) {

Scanner readLine = new Scanner(System.in);
Random rand = new Random();
int[] pack = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13};
cards clubs = new cards(pack);
cards spades = new cards(pack);
cards hearts = new cards(pack);
cards diamonds = new cards(pack);


System.out.println("..................................................................");
System.out.println(".. Welcombe to War.... the card game ..");
System.out.println(".. ..");
System.out.println(".. This Game reuires 4 players, each will be dealt a ..");
System.out.println(".. card from a deck with no jokers until the deck runs out ..");
System.out.println(".. The highest value card winds to points to owner ..");
System.out.println(".. If the winning score is a draw, 1 point is awarded to all ..");
System.out.println(".. of those in the draw,drawing is not limited to two people ..");
System.out.println("..................................................................");

// System.out.print("Enter first players Name: ");
// player1.name = readLine.nextLine();
// System.out.println(player1.name);

// System.out.print("Enter Second players Name: ");
// player2.name = readLine.nextLine();
// System.out.println(player2.name);

// System.out.print("Enter Third players Name: ");
// player3.name = readLine.nextLine();
// System.out.println(player3.name);

// System.out.print("Enter Fourth players Name: ");
// player4.name = readLine.nextLine();
// System.out.println(player4.name);

player player1 = new player("Fred Smith" , 0,0);
player player2 = new player("Bob dole" , 0,0);
player player3 = new player("Jackie breach" , 0,0);
player player4 = new player("Fredin Smither" , 0,0);




int[] scoreCard = new int[] {0,0};
int count = 1;
while (count == 1){
for (int i = 1; i<=1; i++){


scoreCard = score(clubs.getPack(), spades.getPack(), hearts.getPack(), diamonds.getPack());//invokes score function and returns card value and suit
System.out.println("Raw data before applying to object " +player1.getName() + " card value " + scoreCard[0]);
System.out.println("Raw data before applying to object " +player1.getName() + " card suit " + scoreCard[1]);

erase(scoreCard[0],scoreCard[1]);

player1.setHand(scoreCard[0]);
System.out.println(" Test player object hand set " + player1.getHand());
//==========================================================================player2
scoreCard = score(clubs.getPack(), spades.getPack(), hearts.getPack(), diamonds.getPack());
System.out.println("Raw data before applying to object " +player2.getName() + " card value " + scoreCard[0]);
System.out.println("Raw data before applying to object " +player2.getName()+ " card suit " + scoreCard[1]);

erase(scoreCard[0],scoreCard[1]);

player2.setHand(scoreCard[0]);
System.out.println(" Test player object hand set " + player2.getHand());

//=============================================================================player3
scoreCard = score(clubs.getPack(), spades.getPack(), hearts.getPack(), diamonds.getPack());
System.out.println("Raw data before applying to object " +player3.getName() + " card value " + scoreCard[0]);
System.out.println("Raw data before applying to object " +player3.getName() + " card suit " + scoreCard[1]);

erase(scoreCard[0],scoreCard[1]);

player3.setHand(scoreCard[0]);
System.out.println(" Test player object hand set " + player3.getHand());

//==============================================================================================player4
scoreCard = score(clubs.getPack(), spades.getPack(), hearts.getPack(), diamonds.getPack());
System.out.println("Raw data before applying to object " + player4.getName() + " card value " + scoreCard[0]);
System.out.println("Raw data before applying to object " + player4.getName() + " card suit " + scoreCard[1]);

erase(scoreCard[0],scoreCard[1]);

player4.setHand(scoreCard[0]);
System.out.println(" Test player object hand set " + player4.getHand());
}//===============================================================end of player card dealing




for (int loop =0; loop <13; loop++){
System.out.print(" Clubs " + clubs.getCard(loop));
}
System.out.println();
for (int loop =0; loop <13; loop++){
System.out.print(" spades " + spades.getCard(loop));
}
System.out.println();
for (int loop =0; loop <13; loop++){
System.out.print(" hearts " + hearts.getCard(loop));
}
System.out.println();
for (int loop =0; loop <13; loop++){
System.out.print(" diamonds " + diamonds.getCard(loop));
}
System.out.println();
String aContinue = readLine.nextLine();
}//while






}



public int erase(int hand, int suit){

clubs.setCard(hand);

return(0);
}



public static int[] score(int clubs[],int spades[],int hearts[],int diamonds[]){

Random rand = new Random();
// System.out.println("clubs " + clubs[0]);

int card= 0;
int max = 13;//actually one less than max
int club = 1;
int spade =1;
int heart =1;
int diamond=1;


int suit = rand.nextInt(4)+ 1; //this generates a random number between 1 and 4, 1 symbolises clubs, 2 spades, 3 hearts, 4 diamonds
// System.out.println("suit " + suit);

if(suit == 1 && club ==1){ //checking which suit is selected
int ran = rand.nextInt(max);
// System.out.println("Random number generated " + ran);
while (clubs[ran] == 0 && club == 1){
if (clubs[0] !=0 || clubs[1] !=0 || clubs[2] !=0 || clubs[3] !=0 || clubs[4] !=0 || clubs[5] !=0 || clubs[6] !=0 || clubs[7] !=0 || clubs[8] !=0 || clubs[9] !=0 || clubs[10] !=0 || clubs[11] !=0 || clubs[12] !=0 ){
System.out.println(diamonds[ran] + " clubs[ran] Zero, ran: " + ran);
ran = rand.nextInt(max); //this re generates a random value if the card chosen has already been used.
} else { card = 0; club = 0; System.out.println("clubs empty");}
}
card = clubs[ran]; // this gives player 1 the card value.
// System.out.println(player + " scored " + card + " Clubs");

} else if (suit == 2 && spade == 1) {
int ran = rand.nextInt(max);
// System.out.println("Random number generated " + ran);
while (spades[ran] == 0 && spade ==1){
if (spades[0] !=0 || spades[1] !=0 || spades[2] !=0 || spades[3] !=0 || spades[4] !=0 || spades[5] !=0 || spades[6] !=0 || spades[7] !=0 || spades[8] !=0 || spades[9] !=0 || spades[10] !=0 || spades[11] !=0 || spades[12] !=0 ){
System.out.println(diamonds[ran] + " spades[ran] Zero, ran: " + ran);
ran = rand.nextInt(max); //this re generates a random value if the card chosen has already been used.
} else { card = 0; spade = 0; System.out.println("spadess empty");}
}
card = spades[ran]; // this gives player 1 the card value.
// System.out.println(player + " scored " + card + " Spades");

} else if (suit == 3 && heart == 1) {
int ran = rand.nextInt(max);
// System.out.println("Random number generated " + ran);
while (hearts[ran] == 0 && heart ==1){
if (hearts[0] !=0 || hearts[1] !=0 || hearts[2] !=0 || hearts[3] !=0 || hearts[4] !=0 || hearts[5] !=0 || hearts[6] !=0 || hearts[7] !=0 || hearts[8] !=0 || hearts[9] !=0 || hearts[10] !=0 || hearts[11] !=0 || hearts[12] !=0 ){
System.out.println(diamonds[ran] + " hearts[ran] Zero, ran: " + ran);
ran = rand.nextInt(max); //this re generates a random value if the card chosen has already been used.
} else { card = 0; heart = 0; System.out.println("hearts empty");}
}
card = hearts[ran]; // this gives player 1 the card value.
// System.out.println(player + " scored " + card + " Hearts");

} else if (suit == 4 && diamond ==1) {
int ran = rand.nextInt(max);
// System.out.println("Random number generated " + ran);
while (diamonds[ran] == 0 && diamond == 1){
if (diamonds[0] !=0 || diamonds[1] !=0 || diamonds[2] !=0 || diamonds[3] !=0 || diamonds[4] !=0 || diamonds[5] !=0 || diamonds[6] !=0 || diamonds[7] !=0 || diamonds[8] !=0 || diamonds[9] !=0 || diamonds[10] !=0 || diamonds[11] !=0 || diamonds[12] !=0 ){
System.out.println(diamonds[ran] + " diamonds[ran] Zero, ran: " + ran);
ran = rand.nextInt(max); //this re generates a random value if the card chosen has already been used.
} else { card = 0; diamond = 0; System.out.println("diamonds empty");}
}
card = diamonds[ran]; // this gives player 1 the card value.
// System.out.println(player + " scored " + card+ " Diamon");
} else { card = 0; suit = 0; }

int[] scoreCard = new int[] {card,suit};

return scoreCard;
}




// public static int total(int aNumber){
// int a_Value = aNumber + 20;
// return a_Value;
// }

}


alternatively if I invoke the cards from outside of the main class i get the second error in the title




Aucun commentaire:

Enregistrer un commentaire