【发布时间】:2020-02-03 10:03:04
【问题描述】:
我想为用户创建一个简单的程序,将 3 个字符串插入到类中的私有字符串数组中,然后通过使用对象引用创建一个新对象将其打印回来,但我认为我在 setter/getter 中遇到了问题。 (对类和 setter/getter 很陌生)这是我目前所拥有的:
import java.util.Scanner;
public class Stringtest {
public static void main(String[] args)
{ Scanner input=new Scanner(System.in);
Stringer Strung=new Stringer();
System.out.println("Strings:"+Strung.print());
}
}
class Stringer
{ Scanner input=new Scanner(System.in);
private String[] aa=new String[3];
aa[0]="zero";
aa[1]="one";
aa[2]="two";
Stringer()
{}
{ System.out.println("Please enter 3 strings:");
for(int i=0;i<4;i++)
{
aa[i]=input.next();
}
}
public void setaa(String[] a)
{
aa=a;
}
public String[] getaa()
{
return aa;
}
public void print(String[] a)
{
for(int b=0;b<4;b++)
{
System.out.printf("%s",a[b]);
}
}
}
【问题讨论】:
-
您的预期输出是什么?你观察到的输出是什么。此外,您使用initializer block。我建议将逻辑从初始化程序块移动到构造函数。此外,在初始化程序和
print()方法中,for循环从0到3(包括两者),但数组只有3的长度(索引0到 @987654329 @),所以这将导致ArrayIndexOutOfBoundsException。 --- 虽然您已经为aa编写了 getter 和 setter(为了清楚起见,我建议将其重命名),但您不使用它们。 -
和一个提示:如果你想遍历一个数组的所有元素,通常使用
for (int i = 0; i < aa.length; i++)- 所以如果他的数组的大小改变了,代码仍然有效 -
啊,对不起,我想我忘了将字符串数组初始化为几个字符串。我想拥有 setter 和 getter,以便用户输入可以通过创建新对象类来替换初始化的私有字符串数组
标签: java arrays string class setter