2013-11-21 4 views
0

Я разрабатываю приложение для Android ... которое является приложением, основанным на нумерологии, где ... AI имеет значение от 1 до 9, а затем JR и SZ, поэтому каждая буква имеет значения и вычисляет их. .. Мне нужно отобразить resultt, где вычисляется имя пользователя first, например, мое имя ROSHAN PETER ... мое имя - ROSHAN и фамилия PETER, поэтому значение равно 9 + 6 + 1 + 8 + 1 + 5, т. Е. Общее значение это 30 ... следующий мой возраст взят мой возраст 27, поэтому мне нужно взять upto ROSHA, потому что его общее значение равно 25, и когда я вычисляю значение N, оно станет 30. Поэтому мне нужно отобразить, как мое текущее значение N до 30 лет. предположим, что мое имя равно ОЗУ, мое общее значение равно 9 + 1 + 4, поэтому значение равно 14, а мой возраст равен 27, поэтому мне нужно вычислить общее количество ОЗУ, если оно будет таким, чтобы оно получилось 28, поэтому мое текущее письмо - M .. Я сделал код, подобный этому, но моя проблема заключается в том, что ... мое значение первого имени вычисляется один раз .. но мне нужно рассчитать его до моего возраста ... возьмите пример для имени RAM ...Android калькулятор для букв

Я обновляю свои код здесь ..

MainActivity

public void gReport(View V) 
{ 

    long sum17 = 0; 

    EditText et1 = (EditText) findViewById (R.id.editText1); 
    EditText et2 = (EditText) findViewById (R.id.editText2); 
    EditText et3 = (EditText) findViewById (R.id.editText3); 
    EditText et7 = (EditText) findViewById (R.id.editText7);   
    EditText et8 = (EditText) findViewById (R.id.editText8); 
    EditText et9 = (EditText) findViewById (R.id.editText9); 

    sum17 = getSum17(et1.getText().toString()); 

    Intent i = new Intent(this, FullExplanation.class); 

    int day = Integer.parseInt(et7.getText().toString()); 
    int month = Integer.parseInt(et8.getText().toString()); 
    int year = Integer.parseInt(et9.getText().toString()); 

    String s = String.valueOf(FullExplanationEntry.this.getAge(year, month, day)); 

    i.putExtra("name17", sum17 + ""); 
    i.putExtra("a", s + ""); 
    startActivity(i); 
} 

private long getSum17(String text) { 
    // TODO Auto-generated method stub 
    long sum17 = 0; 
    EditText et7 = (EditText) findViewById (R.id.editText7);   
    EditText et8 = (EditText) findViewById (R.id.editText8); 
    EditText et9 = (EditText) findViewById (R.id.editText9); 
    int day = Integer.parseInt(et7.getText().toString()); 
    int month = Integer.parseInt(et8.getText().toString()); 
    int year = Integer.parseInt(et9.getText().toString()); 

    String s = String.valueOf(FullExplanationEntry.this.getAge(year, month, day)); 

    long t = Integer.parseInt(s); 
    char[] name17 = new char[text.length()]; 

    name17 = text.toCharArray(); 

    for(int i=0; i<text.length(); i++) 
    { 
     if(sum17 < t) { 
      sum17 += value17(name17[i]); 
     } else if (sum17 == t) { 
      return sum17; 
     } else { 
      return sum17; 
     } 
    } 
    return sum17; 
} 

private long value17(char a) { 
    // TODO Auto-generated method stub 

    switch(a) 
    { 
     case 'A': 
     return 1;  
     case 'B': 
     return 2; 
     case 'C': 
     return 3; 
     case 'D': 
     return 4; 
     case 'E': 
     return 5; 
     case 'F': 
     return 6; 
     case 'G': 
     return 7; 
     case 'H': 
     return 8; 
     case 'I': 
     return 9; 
     case 'J': 
     return 1; 
     case 'K': 
     return 2; 
     case 'L': 
     return 3; 
     case 'M': 
     return 4; 
     case 'N': 
     return 5; 
     case 'O': 
     return 6; 
     case 'P': 
     return 7; 
     case 'Q': 
     return 8; 
     case 'R': 
     return 9; 
     case 'S': 
     return 1;   
     case 'T': 
     return 2; 
     case 'U': 
     return 3; 
     case 'V': 
     return 4; 
     case 'W': 
     return 5; 
     case 'X': 
     return 6; 
     case 'Y': 
     return 7; 
     case 'Z': 
     return 8; 
     default:   
     return 0; 

    } 

} 

public int getAge (int _year, int _month, int _day) { 

     GregorianCalendar cal = new GregorianCalendar(); 
     int y, m, d, a;   

     y = cal.get(Calendar.YEAR); 
     m = cal.get(Calendar.MONTH) + 1; 
     d = cal.get(Calendar.DAY_OF_MONTH); 
     cal.set(_year, _month, _day); 
     a = y - cal.get(Calendar.YEAR); 
     if ((m < cal.get(Calendar.MONTH) + 1) 
         || ((m == cal.get(Calendar.MONTH) + 1) && (d < cal 
             .get(Calendar.DAY_OF_MONTH)))) { 
       --a; 
     } 
     if(a < 0) 
       throw new IllegalArgumentException("Age < 0"); 
     return a; 
} 
+0

no here .... – roshanpeter

+0

Не используйте имена для бессмысленных переменных, особенно когда кто-то пытается прочитать ваш код. Сохраните время и напишите разборчивый код. ТАКЖЕ КОММЕНТАРИИ ПОЛЕЗНЫ, не следует плохой практике программирования. – JoxTraex

+0

Извините Jox .... Я обязательно сделаю это из своего следующего кода ... Извините – roshanpeter

ответ

2

Ну, мой друг, ваш код почти непостижимо. Однако сегодня у меня было много времени на мои руки, поэтому я пробрался сквозь него. Чтобы понять, что вы пытаетесь выполнить, я переименовал некоторые из ваших переменных, но этот код должен работать без необходимости изменять что-либо, кроме вашего MainActivity.

public class MainActivity extends Activity 
{ 
    EditText edtFirst, edtMiddle, edtLast, edtDay, edtMonth, edtYear; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     edtFirst = (EditText) findViewById(R.id.editText1); 
     edtMiddle = (EditText) findViewById(R.id.editText2); 
     edtLast = (EditText) findViewById(R.id.editText3); 
     edtDay = (EditText) findViewById(R.id.editText7);   
     edtMonth = (EditText) findViewById(R.id.editText8); 
     edtYear = (EditText) findViewById(R.id.editText9); 
    } 

    public void gReport(View v) 
    { 
     String first = edtFirst.getText().toString(); 

     if (first.length() == 0) 
     { 
      Toast.makeText(this, "Please enter a First Name.", Toast.LENGTH_SHORT).show(); 
      return; 
     } 

     try 
     { 
      int day = Integer.parseInt(edtDay.getText().toString()); 
      int month = Integer.parseInt(edtMonth.getText().toString()); 
      int year = Integer.parseInt(edtYear.getText().toString()); 

      int age = getAge(year, month, day); 
      int sum17 = getSum17(first, age); 

      Intent i = new Intent(this, FullExplanation.class); 
      i.putExtra("name17", sum17); 
      i.putExtra("age", age); 
      startActivity(i); 
     } 
     catch (NumberFormatException e) 
     { 
      Toast.makeText(this, "Please enter Day, Month, and Year", Toast.LENGTH_SHORT).show(); 
     } 
     catch (IllegalArgumentException e) 
     {   
      Toast.makeText(this, "Invalid Birthdate", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    private int getSum17(String name, int age) 
    { 
     int sum17 = 0; 
     int ct = 0; 
     boolean done = false; 

     char[] name17 = name.toUpperCase().toCharArray(); 

     if (name17.length == 0 || value17(name17[0]) > age) 
     { 
      return 0; 
     } 

     do 
     { 
      sum17 += value17(name17[ct]); 
      ct++; 

      if (ct > name.length() - 1) 
      { 
       ct = 0; 
      } 

      if (sum17 + value17(name17[ct]) > age) 
      { 
       done = true; 
      } 
     } 
     while (!done); 

     return sum17;  
    } 

    private int value17(char c) 
    { 
     if (c < 65 || c > 90) 
     { 
      return 0; 
     } 

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

    public int getAge(int _year, int _month, int _day) 
    { 
     GregorianCalendar cal = new GregorianCalendar(); 
     int y, m, d, a;   

     y = cal.get(Calendar.YEAR); 
     m = cal.get(Calendar.MONTH) + 1; 
     d = cal.get(Calendar.DAY_OF_MONTH); 
     cal.set(_year, _month, _day); 
     a = y - cal.get(Calendar.YEAR); 
     if ((m < cal.get(Calendar.MONTH) + 1) 
      || ((m == cal.get(Calendar.MONTH) + 1) && (d < cal 
      .get(Calendar.DAY_OF_MONTH)))) 
     { 
      --a; 
     } 
     if (a < 0) 
      throw new IllegalArgumentException("Age < 0"); 
     return a; 
    } 
} 

Теперь обновление только вашего MainActivity должно заставить вас работать. Однако, если вы хотите, вы также можете внести следующие изменения, чтобы помочь пользователю вызвать ошибку времени выполнения.

в макете XML, в каждом из EditTexts для имени, добавьте следующую строку, сохраняя пространство между алфавитами:

android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ" 

И в каждом из EditTexts для даты рождения, добавьте:

android:inputType="number" 

Дайте мне знать, если у вас есть вопросы.

Смежные вопросы