[英]Java accessing class variables?
Below is my program artificial bug. 下面是我的程序人为错误。 How would i be able to access the coorordinates from main which the user has set, and assign them to an array which is set in the MyClass class, thanks in advance:)
我将如何从用户设置的主坐标中访问坐标,并将其分配给在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;
}
edit 编辑
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; }
how about just 怎么样
int x = bug.get(horpos);
int y = bug.get(vertpos);
worldnew.setMap(x,y,bug.getSymbol());
worldnew.printWorld();
and in MyClass, add a new method like 在MyClass中,添加一个新方法,例如
void setMap(int x, int y, String symbol)
{
this.map[x][y] = symbol;
}
you might need to make some changes to suit your code, but the basic idea remains the same 您可能需要进行一些更改以适合您的代码,但是基本思想仍然相同
Edit 编辑
you will also need to change the 您还需要更改
move(BugObj[i]);
to 至
move(BugObj[i],worldnew);
and change the definition of your move function as 然后将移动功能的定义更改为
public static void move(ABug bug, MyClass worldnew)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.