如何修复西班牙语数字

时间:2014-02-27 23:47:14

标签: java

我要做的是创建一个以西班牙语显示数字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); 
        }
    }

7 个答案:

答案 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的数组将具有有效索引01234。将您的循环更改为以下内容:

for (int i = 0; i < num; i++)

这将确保您的循环i中只有09的值。

答案 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]);
}