public class Pig {
private int pigss;
private Pig[] pigs;
public Pig[] pigNumber (int pigss)
{
pigs = new Pig [pigss];
return pigs;
}
包含主要方法的代码:
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 [])。但是给我的错误是:无法从String转换为Pig。任何提示都表示赞赏。谢谢你。
for(int j = 0; j < pigs.length; j++)
{
System.out.println("What is the pig " + (j+1) + "'s name");
pigs[j] = keyboard.nextLine();
}
答案 0 :(得分:0)
您的猪需要一个属性来包含您尝试传递的字符串值:
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中,你只能使用int作为数组的索引
答案 1 :(得分:0)
它说'不能从字符串转换为猪'因为你不能这样做!
如果您想以某种方式将String
转换为Pig
,则需要编写一些代码来进行转换。例如,您可以编写一个构造函数,从某种描述中创建一个新的Pig
。或者你可以用名字或数字等写一个查找 Pig
的方法。
很难提供更具体的建议,因为你没有告诉我们字符串值是什么......或者你期望字符串变成猪。 (我唯一的建议是尝试Macrame :-))
答案 2 :(得分:0)
Pig没有name
成员甚至接受字符串的方法。您还试图将String
(keyboard.nextline()分配给Pig
(pig [j]。
向您的猪添加属性name
。
class Pig{
public String name:
public void Pig(String name){
this.name = name;
}
}
然后在循环中分配Pig
的新实例。
pigs[j] = new Pig(keyboard.nextLine());
还要摆脱无用的班级pigNumber
。您所需要的只是ArrayList
Pig
。数组列表可以是dynanically大小。
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());