嗨,我正在开发一个与数字学有关的android应用程序。在这里我需要计算当前数字的对应值。首先,我将提供有关如何计算当前数字的信息。在数字学中,每个字母都有其自己的值。该值在下面给出。

A-1,B-2,C-3,D-4,E-5,F-6,G-7,H-8,I-9
J-1,K-1,L-3,M-4,N-5,O-6,P-7,Q-8,R-9
S-1,T-2,U-3,V-4,W-5,X-6,Y-7,Z-8


我的问题是我需要显示2012年至2022年一个人的当前工作号码。它是这样计算的。如果假设我的名字Jocheved并且出生日期为12-02-1988,那么在1988年,我的字母为J,因为这是我的名字的第一个字母,并且根据上表所给出的值J为1,所以J在我一生中的作用是1年,即从1988年至1989年,我的下一个字母是O,它的值是6。因此,O的影响将持续6年,即,从1989年至1995年,从1996年开始,C的影响将开始并且将持续下去像这样,一旦字母结束,它将从我的情况下的首字母再次开始,即J。

在我的程序中,我需要显示2012年至2022年的有效人员信。我开发了一个程序,可以显示我的DOB到2022年的值,但我只需要2012年的值。那意味着它应该像
2012年-X
2013 -X像这样..我在下面提供我的代码..如果有人可以帮助..请帮助

tv23.setText(getValueCycle2(2022));

private CharSequence getValueCycle2(int endYear) {
                // TODO Auto-generated method stub
                int c = 0;
                String out = "FName\n\n";
                char[] cycle = getLetterCycle();

                if(birthYear + 1 > endYear)
                {
                    return "";
                }

                for (int i = birthYear + 1; i <= endYear ; i++)
                {
                    out += cycle[c] + "\n";
                    Log.v(TAG, "i - " + i + " : c - " + c + " : cycle(c) - " + cycle[c]);
                    c++;
                    if (c == cycle.length)
                    {
                        c = 0;
                    }

                }

                return out;
            }

            private char[] getLetterCycle() {
                // TODO Auto-generated method stub
                int value;
                char ch;
                String str = "";

                for (int i = 0; i < fName.length(); i++)
                {
                    ch = fName.charAt(i);
                    if (ch >= 'A' && ch <= 'Z')
                    {
                        value = letterValue(ch);
                        for (int j = 0; j < value; j++)
                        {
                            str += ch;
                        }
                    }
                }

                return str.toCharArray();
            }

            private int letterValue(char c) {
                // TODO Auto-generated method stub
                if (c < 65 || c > 90)
                {
                    return 0;
                }

                int v = (c - 64) % 9;
                return v == 0 ? 9 : v;
            }

最佳答案

我不确定我是否理解您的问题。如果只想打印2012年的输出,则只需要两件事:

将方法签名更改为“

private static CharSequence getValueCycle2(int startYear, int endYear)


将Log.v更改为

    if (i >= startYear) {
         Log.v(TAG, "i - " + i + " : c - " + c + " : cycle(c) - " + cycle[c]);

    }


将该方法称为

tv23.setText(getValueCycle2(2012,2022));


还是我错过了什么?

09-10 12:34