0

私はint配列に二重に分割していますが、私が直面している問題は、次のように後ろから入力する必要があることです。

    int[] arrayA = new int[5];
    int[] arrayB = new int[5];
    x = 23456.08;
    //code here

    //what im left with:
    arrayA [0,2,3,4,5,6];
    arrayB [0,8];

ダブルをカットする方法は次のとおりです。

      public static void main(System args[])
{
    Scanner input = new Scanner(System.in);
    String answer = "";
    int count = 0;
    int thatone = 0;
    int[] splitD = new int[5]; //main num
    int[] splitDec = new int[1]; //decimal
    //Enter the Number
    System.out.print("Enter a number to convert: ");
    double num = input.nextDouble();

           // convert number to String
    String convert = num + "";
    // split the number
    String[] split = convert.split("\\.");
    String firstPart = split[0];
    char[] charArray1 = firstPart.toCharArray();
    // recreate the array with size equals firstPart length
    splitD = new int[charArray1.length];
    for (int i = 0; i < charArray1.length; i++) 
    {
        // convert char to int
        splitD[i] = Character.getNumericValue(charArray1[i]);
        count++;
    }

    // the decimal part
    if (split.length > 1) 
    {
        String secondPart = split[1];
        char[] charArray2 = secondPart.toCharArray();
        splitDec = new int[charArray2.length];
        for (int i = 0; i < charArray2.length; i++) 
        {
            // convert char to int
            splitDec[i] = Character.getNumericValue(charArray2[i]);
        }
    }
    for(int i =0; i<count;i++)
    {
        if(i ==0) // x00000.00 or 000x00.00
        {
            if(splitD[0] != "0")
            {
                switch (splitD[i])
                {
                    case 9: answer+="Nine"; break;
                    case 8: answer+="Eight"; break;
                    case 7: answer+="Seven"; break;
                    case 6: answer+="Six"; break;
                    case 5: answer+="Five"; break;
                    case 4: answer+="Four"; break;
                    case 3: answer+="Three"; break;
                    case 2: answer+="Two"; break;
                    case 1: answer+="One"; break;
                    default: answer+=""; break;
                }
                answer+= " Hundred ";
            }
            else
            {
                answer+= "";
            }
        }
        else if(i ==1)//this goes with i =2 //0x0000
        {
            if(splitD[i] == 1)
            {
                switch (splitD[i+1])
                {
                    case 9: answer+="Nineteen"; break;
                    case 8: answer+="Eighteen"; break;
                    case 7: answer+="Seventeen"; break;
                    case 6: answer+="Sixteen"; break;
                    case 5: answer+="Fifteen"; break;
                    case 4: answer+="Fourteen"; break;
                    case 3: answer+="Thirteen"; break;
                    case 2: answer+="Twelve"; break;
                    case 1: answer+="ten"; break;
                    default: answer+=""; break;
                }
                answer+= " Thousand ";
                thatone = 1;
            }
            else
            {
                switch (splitD[i])
                {
                    case 9: answer+="Ninety"; break;
                    case 8: answer+="Eighty"; break;
                    case 7: answer+="Seventy"; break;
                    case 6: answer+="Sixty"; break;
                    case 5: answer+="Fifty"; break;
                    case 4: answer+="Fourty"; break;
                    case 3: answer+="Thirty"; break;
                    case 2: answer+="Twenty"; break;
                    case 1: answer+=""; break;
                    default: answer+=""; break;
                }
            }
        }
        else if(i == 2) //00x000
        {
            if(thatone ==0)
            {
                switch (splitD[i])
                {
                    case 9: answer+=" Nine"; break;
                    case 8: answer+=" Eight"; break;
                    case 7: answer+=" Seven"; break;
                    case 6: answer+=" Six"; break;
                    case 5: answer+=" Five"; break;
                    case 4: answer+=" Four"; break;
                    case 3: answer+=" Three"; break;
                    case 2: answer+=" Two"; break;
                    case 1: answer+=" One"; break;
                    default: answer+=""; break;
                }
                answer+= " Thousand ";
            }
            else
            {
            }


        }
        else if(i ==3)
        {
             switch (splitD[i])
            {
                case 9: answer+="Nine"; break;
                case 8: answer+="Eight"; break;
                case 7: answer+="Seven"; break;
                case 6: answer+="Six"; break;
                case 5: answer+="Five"; break;
                case 4: answer+="Four"; break;
                case 3: answer+="Three"; break;
                case 2: answer+="Two"; break;
                case 1: answer+="One"; break;
                default: answer+=""; break;
            }
            answer+= " Hundred ";
        }
        else if(i ==4) //0000x0
        {
            switch (splitD[i])
            {
                case 9: answer+="Ninety"; break;
                case 8: answer+="Eighty"; break;
                case 7: answer+="Seventy"; break;
                case 6: answer+="Sixty"; break;
                case 5: answer+="Fifty"; break;
                case 4: answer+="Fourty"; break;
                case 3: answer+="Thirdy"; break;
                case 2: answer+="Twenty"; break;
                case 1: answer+=""; break;
                default: answer+=""; break;
            }
            answer+= " ";
        }
        else if(i ==5) //00000x
        {
            switch (splitD[i])
                {
                    case 9: answer+="Nine"; break;
                    case 8: answer+="Eight"; break;
                    case 7: answer+="Seven"; break;
                    case 6: answer+="Six"; break;
                    case 5: answer+="Five"; break;
                    case 4: answer+="Four"; break;
                    case 3: answer+="Three"; break;
                    case 2: answer+="Two"; break;
                    case 1: answer+="One"; break;
                    default: answer+=""; break;
                }
        }
}
       if(splitDec[0] == 0)
        {
           answer += " and 00/100 Dollars";
       }
       else if(splitDec[1] == 0)
       {
           answer += " and " +splitDec[0] + "0/100 Dollars";
       }
               else
       {
           answer += " and " +splitDec[0] +splitDec[1] +" /100 Dollars";
       }
                System.out.println(answer);
    }
    }

配列に適切な場所に0を追加するにはどうすればよいですか?たとえば、54.00と入力すると、次のようになります。

    int[] SplitD = {0,0,0,0,5,4};

ありがとう!

4

2 に答える 2

0

各文字(小数点を含む)Stringに1つずつ、の配列を作成する方が良いアプローチだと思います。String

String[] chars = String.valueOf(num).split("(?<=.)");

仕事は終わりました。

編集:

スイッチを使用するには、分割すらしないでください。

for (byte b : String.valueOf(num).getBytes()) {
    switch(b) {
    case '.':
    case '1':
    }
}
于 2013-03-12T01:54:09.477 に答える
0

アレイを再初期化する代わりに:

// recreate the array with size equals firstPart length
splitD = new int[charArray1.length];
for (int i = 0; i < charArray1.length; i++) 
{
    // convert char to int
    splitD[i] = Character.getNumericValue(charArray1[i]);
    count++;
}

既存の(長さ= 5)を使用し、後ろから繰り返します:

if(charArray1.length > 5) // heavy hard-code, would prefer something better
    throw new IllegalArgumentException("Maximum 5 digits, on both decimal sides.");
    // watch out of ArrayIndexOutOfBoundsException

for (int i = charArray1.length - 1, j = splitD.length -1 ;
                                    i >=0 && j >=0; i--, j--) 
{
    // convert char to int
    splitD[j] = Character.getNumericValue(charArray1[i]);
    count++;
}

思い出してくださいint。初期化時に、配列はゼロで埋められます。

于 2013-03-12T02:17:37.740 に答える