Java访问类变量?

时间:2015-11-04 18:01:00

标签: java arrays class variables methods

以下是我的程序人工漏洞。我如何能够从用户设置的main访问coorordinates,并将它们分配给MyClass类中设置的数组,提前感谢:)

//imports
import java.util.Scanner;
import java.util.Random;


public class main {

    public static void main(String[] args) {

        Scanner reader = new Scanner(System.in);
        ABug[] BugObj = new ABug[4]; //Creating object BugObj of class ABug
        int loop = 4;
        int i = 0;
        int cycles;
        MyClass worldnew = new MyClass();



        System.out.println("Please enter the number of cycles you wish to run:");   
        cycles = reader.nextInt(); //getting the amount of cycles to be run
        System.out.print("____Current World____\n\n");
        worldnew.printWorld(); //calling method to print out world

        System.out.println("____Key____\n_F_ - Food\n_O_ - Object\n_ _ - Space\nSymbol - Bug");


        do{

            BugObj[i] = new ABug();  //creating instance


            System.out.print("Please enter the symbol which you wish to represent the bug:");
            BugObj[i].symbol = reader.next();
            System.out.print("Please enter the name of the bug:");
            BugObj[i].name = reader.next(); 
            System.out.println("Please enter the species of the bug:");   
            BugObj[i].species = reader.next(); 
            System.out.println("Please enter the horizontal position of the bug:");   
            BugObj[i].horpos = reader.nextInt();
            System.out.println("Please enter the vertical postion of the bug:");   
            BugObj[i].vertpos = reader.nextInt();   


            System.out.println("_______________ Bug " +(+i+1) + " _______________\n" );
            System.out.println("Symbol: " + BugObj[i].symbol);     //Printing bug information out
            System.out.println("Name: " + BugObj[i].name);           
            System.out.println("Species: " + BugObj[i].species);
            System.out.println("Horizontal Position: " + BugObj[i].horpos);
            System.out.println("Vertical Postion: " + BugObj[i].vertpos + "\n\n");
            move(BugObj[i]);


            i++;
            System.out.println("Would you like to enter another bug? \n 0-No,  1-Yes\n");
            loop = reader.nextInt();
        }while(loop == 1);
    }


    public static void move(ABug bug){
        Scanner reader = new Scanner(System.in);
        System.out.println("Would you like this bug to move?\n 0-No,  1-Yes\n");
        if (reader.nextInt() == 0)
        {
            System.exit(0);
        }



        //get corordinate of bug
        //set map[coor] = symbol
        //print out map


        int r = (int) (Math.random() * (2- -2)) + -2;
        int originalHorpos = bug.horpos;
        int originalVertpos = bug.vertpos;
        bug.horpos = originalHorpos + r;
        bug.vertpos = originalVertpos + r;


        System.out.println("New Horizontal Position: " +bug.horpos );
        System.out.println("New Vertical Postion: " +bug.vertpos);

    }

}
enum Item {
    OBJECT ('O'),FOOD ('F'), SPACE (' ');

    private final char symbol;
    Item(char symbol) {
        this.symbol = symbol;
    }
    char getSymbol() { return symbol; }
}
class MyClass {
    Item[][] map = new Item[15][25];
    public void printWorld() {

        int v, h; //v - vert, h - hor

        for (v=1; v<=15; ++v)
        {
            for (h=1; h<=25; ++h)
            {

                final Item[] items = {Item.OBJECT, Item.FOOD, Item.SPACE, Item.SPACE, Item.SPACE, Item.SPACE, Item.SPACE, Item.SPACE};
                Random random = new Random();
                int selection = random.nextInt(items.length);
                map[v-1][h-1] = items[selection];
                System.out.print(map[v-1][h-1].getSymbol() + "_"); 


            }
            System.out.printf("\n");
        } 
    }
}
class ABug {                 //ABug class
    int horpos, vertpos, energy, id;
    String species, name, symbol;

}

修改

&#13;
&#13;
package buglife;



//imports
import java.util.Scanner;
import java.util.Random;


public class main {

	public static void main(String[] args) {

		Scanner reader = new Scanner(System.in);
		ABug[] BugObj = new ABug[4]; //Creating object BugObj of class ABug
		int loop = 4;
		int i = 0;
		int cycles;
		MyClass worldnew = new MyClass();



		System.out.println("Please enter the number of cycles you wish to run:");   
		cycles = reader.nextInt(); //getting the amount of cycles to be run
		System.out.print("____Current World____\n\n");
		worldnew.printWorld(); //calling method to print out world

		System.out.println("____Key____\n_F_ - Food\n_O_ - Object\n_ _ - Space\nSymbol - Bug");


		do{

			BugObj[i] = new ABug();  //creating instance


			System.out.print("Please enter the symbol which you wish to represent the bug:");
			BugObj[i].symbol = reader.next();
			System.out.print("Please enter the name of the bug:");
			BugObj[i].name = reader.next(); 
			System.out.println("Please enter the species of the bug:");   
			BugObj[i].species = reader.next(); 
			System.out.println("Please enter the horizontal position of the bug:");   
			BugObj[i].horpos = reader.nextInt();
			System.out.println("Please enter the vertical postion of the bug:");   
			BugObj[i].vertpos = reader.nextInt();	


			System.out.println("_______________ Bug " +(+i+1) + " _______________\n" );
			System.out.println("Symbol: " + BugObj[i].symbol);     //Printing bug information out
			System.out.println("Name: " + BugObj[i].name);           
			System.out.println("Species: " + BugObj[i].species);
			System.out.println("Horizontal Position: " + BugObj[i].horpos);
			System.out.println("Vertical Postion: " + BugObj[i].vertpos + "\n\n");
			move(BugObj[i], worldnew);


			i++;
			System.out.println("Would you like to enter another bug? \n 0-No,  1-Yes\n");
			loop = reader.nextInt();
		}while(loop == 1);
	}


	public static void move(ABug bug, MyClass wolrdnew){
		Scanner reader = new Scanner(System.in);
		System.out.println("Would you like this bug to move?\n 0-No,  1-Yes\n");
		if (reader.nextInt() == 0)
		{
			System.exit(0);
		}

		int x = bug.horpos;
		int y = bug.vertpos;


		worldnew.setMap(x,y,bug.symbol());
		worldnew.printWorld();

		//get corordinate of bug
		//set map[coor] = symbol
		//print out map


		int r = (int) (Math.random() * (2- -2)) + -2;
		int originalHorpos = bug.horpos;
		int originalVertpos = bug.vertpos;
		bug.horpos = originalHorpos + r;
		bug.vertpos = originalVertpos + r;


		//bug.horpos += r; 
		//bug.vertpos += r;

		System.out.println("New Horizontal Position: " +bug.horpos );
		System.out.println("New Vertical Postion: " +bug.vertpos);

	}
}

//public void smellFood (Direction d){
//	int MaxSensingDist = 2;
//}

//public void getRandomDirectionToMove (Direction d){
//
//}

//public void getDirectionOfFood (){

//}


enum Item {
	OBJECT ('O'),FOOD ('F'), SPACE (' ');

	private final char symbol;
	Item(char symbol) {
		this.symbol = symbol;
	}
	char getSymbol() { return symbol; }
}
class MyClass {

	public void setMap(int x, int y, Item symbol)
	{
		this.map[x][y] = symbol;
	}
	Item[][] map = new Item[15][25];
	public void printWorld() {

		int v, h; //v - vert, h - hor

		for (v=1; v<=15; ++v)
		{
			for (h=1; h<=25; ++h)
			{

				//map[0][0] = Item.TREE;
				//map[0][1] = Item.FOOD;
				//System.out.print(map[0][0].getSymbol());
				//System.out.print(map[0][1].getSymbol());

				//final String[] items = {"F", "O", ". ", ". ", ". ", ". ", ". ", ". "};
				//Random random = new Random();
				//int index = random.nextInt(items.length);
				//System.out.printf(items[index] + "\t");  

				final Item[] items = {Item.OBJECT, Item.FOOD, Item.SPACE, Item.SPACE, Item.SPACE, Item.SPACE, Item.SPACE, Item.SPACE};
				Random random = new Random();
				int selection = random.nextInt(items.length);
				map[v-1][h-1] = items[selection];
				System.out.print(map[v-1][h-1].getSymbol() + "_"); 


			}
			System.out.printf("\n");
		} 
	}
}
class ABug {                 //ABug class
	int horpos, vertpos, energy, id;
	String species, name, symbol;

}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

怎么样只是

int x = bug.get(horpos);
int y = bug.get(vertpos);

worldnew.setMap(x,y,bug.getSymbol());

worldnew.printWorld();

并在MyClass中添加一个新方法,如

void setMap(int x, int y, String symbol)
{
    this.map[x][y] = symbol;
}

您可能需要进行一些更改以适合您的代码,但基本想法仍然相同

修改

您还需要更改

move(BugObj[i]);

move(BugObj[i],worldnew);

并将移动功能的定义更改为

public static void move(ABug bug, MyClass worldnew)