对于我的编程课程的练习题,我们有:
“定义一个返回字符串二维数组第一行的方法,该字符串的字符串名为”John“。”
public class TwoDimensionalStringArrayI {
public static void main(String[] args) {
String[][] b = {{"John", "Abby"},
{"Sally", "Tom"}};
System.out.println(firstRow(b)); // line 8
}
public static String[] firstRow(String[][] a) {
String[] name = new String[a[0].length];
int counter = 0;
for (int row = 0; row < a.length; row++) {
for (int col = 0; col < a[row].length; col++) {
name[counter++] = a[row][col]; // line 17
}
}
return name;
}
}
在Eclipse上完成调试过程后,我的String数组name
被设置为{"John", "Abby"}
,但是当我尝试运行时,我在第8行和第17行遇到ArrayIndexOutOfBoundsException
错误程序。
对如何让这个程序输出名称“John”和“Abby”感到困惑。
答案 0 :(得分:0)
我认为你应该在第17行切换变量row和col。
答案 1 :(得分:0)
因为这条线;
firstRow(String[][] a)
for (int row = 0; row < 1; row++) {
方法的目标是返回数组的第一行,因此,上面的行应如下所示;
name
因为它遍历数组的所有元素,它超过了String[] name = new String[a[0].length];
数组的大小,该数组只有一个[0] .length房间,数字上为2.(public class TwoDimensionalStringArrayI {
public static void main(String[] args) {
String[][] b = {{"John", "Abby"},
{"Sally", "Tom"}};
// System.out.println(firstRow(b)); // line 8
String[] result = firstRow(b);
for(int i = 0; i < result.length; i++)
System.out.print(firstRow(b)[i] + " ");
}
public static String[] firstRow(String[][] a) {
String[] name = new String[a[0].length];
int counter = 0;
// for (int row = 0; row < a.length; row++) {
for (int row = 0; row < 1; row++) {
for (int col = 0; col < a[row].length; col++) {
name[counter++] = a[row][col]; // line 17
}
}
return name;
}
}
)< / p>
为了使您的代码有效,有两种方法;
如上所述更新for循环条件,测试代码为;
John Abby
输出如下;
public static void main(String[] args) {
String[][] b = {{"John", "Abby"},
{"Sally", "Tom"}};
// System.out.println(firstRow(b)); // line 8
String[] result = firstRow(b);
for(int i = 0; i < result.length; i++)
System.out.print(firstRow(b)[i] + " ");
}
public static String[] firstRow(String[][] a) {
return a[0];
}
你注意到了(你应该),我也更新了打印线。
使代码正常运行的第二种方法是,只返回[] []的第一行,这实际上就像返回[1]一样简单。测试代码是;
John Abby
输出是;
class Jobs(models.Model):
jobnum = models.CharField(max_length=6, blank=False, null=True)
color = models.CharField(max_length=120, blank=False, null=True)
recruits = models.CharField(max_length=120, blank=False, null=True)
contact = models.CharField(max_length=120, blank=False, null=True)
subject = models.CharField(max_length=120, blank=False, null=True)
.....more stuff....
def __unicode__(self): #python 3.3. is __str__
return self.jobnum
希望它有所帮助。