2015-11-15 30 views
-1

很抱歉,如果我沒有任何感覺,我沒有太多的實踐項目/字符串獲取輸入的問題?

你好,我已成立了項目舉行了一組這意味着可以放置一個基於文本的地圖上字符的,但是當我要求字符,有一個錯誤,說明它必須是一個字符串類型。有沒有辦法將我的項目轉換爲字符串,或允許輸入項目?在此先感謝

錯誤是用戶嘗試輸入符號的位置。我知道我可以使用string.valueof,但我不確定在哪裏實現它。

//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 worldnew){ 
     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; 
     Item a = bug.symbol; 

     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); 

    } 
} 


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) 
      { 


       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; 
    Item symbol; 

} 
+0

請打印您的堆棧跟蹤 – therealprashant

+0

錯誤:類buglife.main沒有找到Main方法,請定義主方法如下: public static void main(String [] args) 或者JavaFX應用程序類必須擴展javafx.application.Application。 ? – Logic

+0

使用'public static void main(String [] args)'來定義你的主要方法。 – khelwood

回答

2

的這裏的問題是ABug.symbolItem枚舉類型,而不是一個String。你需要一種方法來在兩者之間進行轉換。這種方法添加到Item

public static Item findItemType(String symbol) { 
     for(Item i : Item.values()) { 
      if(String.valueOf(i.getSymbol()).equals(symbol)) { 
       return i; 
      } 
     } 
     return null; 
    } 

然後,改變你的main()的方法來使用它:

  System.out.print("Please enter the symbol which you wish to represent the bug:"); 
      BugObj[i].symbol = Item.findItemType(reader.next()); 
      if(BugObj[i].symbol == null) { 
       //Bad symbol! 
      } 
+1

謝謝,真的很感激:) – Logic