无法从字符串转换为对象(动物)

时间:2016-04-06 21:45:36

标签: java arrays string

package core;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import java.util.regex.Pattern;

public class VetShop
{

 public static void main(String[] args)
 {
  Animal[] Clients = new Animal[73];
  //File ClientInfo = new File("C:/Users/William/Desktop/HomeWork5/program5.txt");
  inputData(Clients);
  SortData(Clients);
  ReportData(Clients);
 }

 public static void inputData(Animal[] client)throws InputMismatchException
 {
  //reading
  File ClientInfo = new File("C:/Users/William/Desktop/HomeWork5/program5.txt");
  Scanner input = new Scanner(ClientInfo);
  //Animal X = new Animal(
  while(input.hasNext())
  {
   for(int i = 1; i <=client.length ;i++)
   {

   client[i]= input.nextLine();   //Problem is here
   //System.out.println(numbers[j]);

   }
  }

 }


 public static void SortData(Animal[] clients)
 {
  //Not HERE YET
 }

 public static void ReportData(Animal[] clients)
 {
  //Not HERE YET
 }
}

这是我们需要使用的文本文件

料斗2003 555 Kangaroo 2

kitty 2009 44 Cat 4

Spot 2005 333 Dog 4

Johnny 2008 111 Cat 4

Dan 2015 433 Dog 4

Striper 2011 432 Sckunk 4

Edward 1995 630 Horse 4

casper 1998 88 Snake Cold-Blooded

靴子2005 987马4

Ryan 2014 21鱼冷血

2 个答案:

答案 0 :(得分:0)

您需要更改此行:

client[i]= input.nextLine();   //Problem is here

作为

client[i] = new Animal();
String line = input.nextLine();

这是因为input.nextLine()返回一个String,而不是Animal。

现在,解析line并将其拆分为已有的字段。例如:

 hopper 2003 555 Kangaroo 2

有5个字段。

另外,请将变量'client'的名称更改为'animals'。

答案 1 :(得分:0)

因此,您无法将String转换为Animal,因为它们是两种不同类型的对象。您可以做的是在Animal类中创建一个public static Animal parse(String string)方法,该方法将获取一个String并返回一个解析后的Animal对象,然后您可以将该对象添加到该数组中。然后你可以用以下方式调用它:

client[i] = Animal.parse(input.nextLine());

在parse方法中,您可以创建一个新的Animal,拆分String并在刚刚​​创建的Animal对象中设置适当的字段,最后返回新创建的Animal对象。