【问题标题】:Declaring an object array in java (code included)?在java中声明一个对象数组(包括代码)?
【发布时间】:2014-04-11 02:43:00
【问题描述】:
public class Pig {
    private int pigss;
    private Pig[] pigs;

public Pig[] pigNumber (int pigss)
{
    pigs = new Pig [pigss];
    return pigs;
}

包含 main 方法的代码:

public class animals{

    public static void main(String[] args){

    Pig cool = new Pig();
    Scanner keyboard = new Scanner (System.in);

    System.out.println("How many pigs are there?");

    int pigss = Integer.parseInt( keyboard.nextLine() );
    cool.pigNumber(pigss);
    //This is where I have trouble. I want to use the array pigs here in the main method, this is what i tried:

    Pig[] pigs = cool.pigNumber(pigss);

然后我尝试使用 for 循环并将值 (String) 分配给数组的索引 (pigs[])。但给我的错误是:无法从字符串转换为猪。任何提示表示赞赏。谢谢。

     for(int j = 0; j < pigs.length; j++)
     {
      System.out.println("What is the pig " + (j+1) + "'s name");
      pigs[j] = keyboard.nextLine();

    }

【问题讨论】:

  • 错误是为了显示。请发到这里谢谢
  • 请发布您的Pig 构造函数。
  • 类型不匹配:无法从 String 转换为 Pig。
  • 哪一行给出“类型不匹配:无法从字符串转换为猪”?
  • @user3503794 不,我们的意思是在您的问题中发布错误的完整堆栈跟踪。转到底部的编辑并在那里发布。还包括埃利奥特所说的

标签: java arrays object


【解决方案1】:

你的猪需要一个属性来包含你试图传递的字符串值:

public class Pig {

    private String name;

    public void setName(String n) {
        name = n;
    }

    public String getName() {
        return name;
    }

那么当你想把这个字符串赋值给你的猪时:

int indexOfPig = 0; // Or whatever it is supposed to be
pigs[indexOfPig].setName("I am a string");

在java中你只能使用整数作为数组的索引

【讨论】:

  • 感谢您的意见。我会在这里尝试所有的答案。
  • 这可能有点晚了,但是我如何将您的代码放入我的代码中?由于某种原因,我无法放置它。希望不要问太麻烦
【解决方案2】:

它说'不能从字符串转换为猪',因为你不能这样做!

如果您想以某种方式将String 转换为Pig,您将需要编写一些代码来进行转换。例如,您可以编写一个构造函数,根据某种描述创建一个新的Pig。或者您可以编写一个方法,查找 Pig 按名称或编号或其他内容。

很难提供任何更具体的建议,因为您没有告诉我们字符串值中有什么......或者您期望字符串如何变成猪。 (我唯一的建议是尝试Macrame :-))

【讨论】:

  • 我更新了我的帖子。如果你有时间,请看一下。我同意你的观点,但是在编写构造函数时遇到了麻烦。
  • @user3503794 - 除非你告诉我们问题出在哪里,否则我不知道该如何提供帮助。
【解决方案3】:

Pig 没有name 成员,甚至没有接受字符串的方法。您还试图将String(keyboard.nextline() 分配给Pig(pigs[j].

为你的猪添加属性name

class Pig{
   public String name:
   public void Pig(String name){
        this.name = name;
   }
}

然后在循环中分配Pig 的新实例。

pigs[j] = new Pig(keyboard.nextLine());

还要去掉无用的类pigNumber。您只需要ArrayListPigs。数组列表可以动态调整大小。

List<Pig> pigs = new ArrayList<Pig>

所以你的循环可能类似于

 String name = ""
 while(true){
     name = keyboard.readline();
    if(name== "stop"){
        break;
    }
    pigs.add(new Pig(names);

}

那么得到猪的数量就很简单了

System.out.println(pigs.length());

【讨论】:

  • 好的,我试试看。谢谢
  • 我无法将您的代码的顶部部分放入我的代码中。我希望不要问你是否可以把代码放在我应该放的地方,这真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 2012-02-26
相关资源
最近更新 更多