我要做的是创建一个以西班牙语显示数字1到10的SpanishNumbers应用程序。带有int参数的方法应显示传递的数字的西班牙语单词。应该使用main()方法中的循环结构来调用该方法十次。数字1到10的西班牙语单词等价物是......
1 uno 2 dos,3 tres,4 cuatro,5 cinco,6 seis,7 siete,8 ocho,9 nueve,10 diez。
我不知道为什么我会在下面收到此错误 http://i.stack.imgur.com/HLIiI.png
先谢谢!
import java.util.Scanner;
public class SpanishNumberss {
public static void spanishNumbers(int num) {
String[] numbers = {"uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez"};
for (int i = 1; i <= num; i++) {
System.out.println(numbers[num]);
}
}
public static void main(String args[]) {
for (int i = 1; i <= 10; i++)
spanishNumbers(i);
}
}
答案 0 :(得分:3)
在Java中,数组的索引以0
开头,而不是1
,并且贯穿length - 1
,而不是length
。
在for
中调整main
循环条件,如下所示:
for (int i = 0; i < numbers.length; i++)
您需要同样调整其他for
循环。
答案 1 :(得分:2)
数组索引基于0(从0开始而不是从1开始)。此外,您每次调用方法时都会在方法中声明数组numbers
,只需将其声明为类变量。因此请注意,在您的示例中,索引0指的是1(uno),依此类推。
我为您举了一个示例并添加了0,"cero"
public class SpanishNumberss {
private static final String[] numbers = {"cero","uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez"};
public static void spanishNumbers(int num) {
//loop here is unnecesary
System.out.println(numbers[num]);
}
public static void main(String args[]) {
//and here in main i call them from 1 to 10
for (int i = 1; i < 11; i++){
spanishNumbers(i);
}
}
}
答案 2 :(得分:1)
ArrayIndexOutOfBounds意味着您已经超出了数组的边界(在您的情况下为numbers
)。你必须意识到的是数组是基于0索引的。所以在你的for
循环中,你真的是0 - 9,而不是1-10。
正如@rgettman发布的更好的解决方案是使用数组的length属性。所以你不是那些神奇数字的硬编码。
答案 3 :(得分:0)
数组从0到N-1
这就是为什么你会收到这个错误,将你的周期改为:
for (int i = 1; i <= num; i++) {
System.out.println(numbers[num]);
}
答案 4 :(得分:0)
你的问题在这里:
for (int i = 1; i <= num; i++)
Java中的数组是基于0
的。因此,有效索引从0
运行到array.length - 1
。因此,长度为5
的数组将具有有效索引0
,1
,2
,3
和4
。将您的循环更改为以下内容:
for (int i = 0; i < num; i++)
这将确保您的循环i
中只有0
到9
的值。
答案 5 :(得分:0)
你的循环应该只有 0到9 的值:
for (int i = 0; i < num; i++)
答案 6 :(得分:0)
首先,我认为你不需要在西班牙语数字方法中使用循环......
因为你已经知道你正在寻找的指数... //如果我理解你
所以你需要循环的唯一地方是main方法......所以你的代码看起来应该是dis
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
spanishNumbers(6);
}
}
public static void spanishNumbers(int num) {
String[] numbers = {"uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez"};
System.out.println(numbers[num -1]);
}