2015-07-03 2 views
3

Привет У меня есть приложение, которое загружается в значения. Значения: x, y и строковое значение. Я хочу знать, как загрузить в строке, потому что я знаю только, как это сделать с целым числом. Посмотрите на этот код:java Как загрузить строковое значение

public static void loadStars() { 
    try { 
     BufferedReader bf = new BufferedReader(new FileReader ("files/cards.txt")); 
     for (int i = 0; i < 10; i++) { 
      String line; 
      while ((line = bf.readLine()) != null) { 

       String[] args = line.split(" "); 

       int x = Integer.parseInt(args[0]); 
       int y = Integer.parseInt(args[1]); 
       String name = Integer.parseInt(args[2]); 

       play.s.add(new Star(x,y,name)); 


      } 
     } 

     bf.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

У меня есть

play.s.add(new star(x,y,name)); 

Я знаю, как загрузить в x и y, но я не знаю, как загрузить в name. Пожалуйста, помогите мне.

Edit ----

В файле, который загружается в нем отформатирован так:

x y name 

пример:

10 10 jack 
100 500 conor 

каждая звезда представлена ​​1 линия.

public class Star extends BasicStar { 

    private Image img; 

    public Star(int x, int y,String starname) { 
     this.x = x; 
     this.y = y; 
     this.starname = starname; 

     r = new Rectangle(x, y, 3, 3); 
    } 

    public void tick() { 

     if (r.contains(Comp.mx, Comp.my) && Comp.ml) { 
      remove = true; 
     } 
    } 

    public void render(Graphics g) { 
     if (!displaySolar) { 

      ImageIcon i2 = new ImageIcon("res/planets/star.png"); 
      img = i2.getImage(); 
      g.drawImage(img, x, y, null); 
     } 
    } 
} 

ответ

7

массива арг [] уже Струнный поэтому вам просто нужно изменить

String name = Integer.parseInt(args[2]); 

в

String name = args[2]; 

И это все.

+0

уточните: – user3929251

+0

@ user3929251 Итак, play.s - это список ? – Kiki

+0

это ArrayList (звезда) – user3929251

1

Попробуйте это.

public static void loadStars() { 
     try { 
      BufferedReader bf = new BufferedReader(new FileReader ("files/cards.txt")); 
      for (int i = 0; i < 10; i++) { 
       String line; 
       while ((line = bf.readLine()) != null) { 

        String[] args = line.split(" "); 

        int x = Integer.parseInt(args[0]); 
        int y = Integer.parseInt(args[1]); 
        String name = args[2]; // args array contain string, no need of conversion. 

        play.s.add(new Star(x,y,name)); 


       } 
      } 

     bf.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
0

Вы улучшаете свой код с помощью StringTokenizer. Попробуй это.

public static void loadStars() 
     throws IOException { 
    String line; 
    BufferedReader bf = new BufferedReader(new FileReader ("files/cards.txt")); 
    try 
    { 
    while((line = bf.readLine()) != null) 
    { 
     if (line == null || line.trim().isEmpty()) 
      throw new IllegalArgumentException(
        "Line null!"); 

     StringTokenizer tokenizer = new StringTokenizer(line, " "); 
     if (tokenizer.countTokens() < 3) 
      throw new IllegalArgumentException(
        "Token number not valid (<= 3)"); 
     int x, y; 
     String xx = tokenizer.nextToken(" ").trim(); 
     String yy = tokenizer.nextToken(" ").trim(); 
     String name = tokenizer.nextToken(" ").trim(); 
     try 
     { 
     x = Integer.parseInt(xx); 
     }catch(ParseException e){throw new IllegalArgumentException(
       "Number format not valid!");} 
     try 
     { 
     y = Integer.parseInt(yy); 
     }catch(ParseException e){throw new IllegalArgumentException(
       "Number format not valid!");} 
     play.s.add(new Star(x,y,name)); 
    } 
    } catch (NoSuchElementException | NumberFormatException | ParseException e) { 
     throw new IllegalArgumentException(e); 
    } 
} 
0

массива арг [] уже Струнный поэтому вам просто нужно изменить

String name = Integer.parseInt(args[2]); 

// If you are using this values anywhere else you'd do this so de GC can collects the arg[] array 
String name = new String(args[2]); 

Имейте в виду, что если у вас есть пробелы в строковых аргументов каждое слово будет новый аргумент. Если у вас есть вызов, как:

java -jar MyProgram 1 2 This is a sentence. 

Ваш аргумент [] будет:

{"1", "2", "This", "is", "a", "sentence."} 

Если вам нужно предложение быть одна строка, которую вы должны использовать апостроф:

java -jar MyProgram 1 2 "This is a sentence." 

Ваш arg [] будет:

{"1", "2", "This is a sentence."} 
Смежные вопросы