2013-11-12 1 views
0

Я создаю этот код, но не функционирую, как я могу это сделать? Я хочу, чтобы содержимое строки принимает другое значение, в зависимости от переменной ..Я хочу изменить строковое значение с переменной содержимого progmatically

if ((euro9 == 0) && (cent9 == 00)) { 
        String msg1 = "Euro:"+MailA.this.euro1+","+MailA.this.cent1+" "+"Motivazione:"+MailA.this.motivazione+"\n"; 
        String msg3 = "Euro:"+MailA.this.euro3+","+MailA.this.cent3+" "+"Motivazione:"+MailA.this.motivazione2+"\n"; 
        String msg4 = "Euro:"+MailA.this.euro4+","+MailA.this.cent4+" "+"Motivazione:"+MailA.this.motivazione4+"\n"; 
        String msg5 = "Euro:"+MailA.this.euro5+","+MailA.this.cent5+" "+"Motivazione:"+MailA.this.motivazione5+"\n"; 
        String msg6 = "Euro:"+MailA.this.euro6+","+MailA.this.cent6+" "+"Motivazione:"+MailA.this.motivazione6+"\n"; 
        String msg7 = "Euro:"+MailA.this.euro7+","+MailA.this.cent7+" "+"Motivazione:"+MailA.this.motivazione7+"\n"; 
        String msg8 = "Euro:"+MailA.this.euro8+","+MailA.this.cent8+" "+"Motivazione:"+MailA.this.motivazione8+"\n"; 
        String msg9 = ""; 

       } 

       if ((euro9 != 0) && (cent9 != 00)) { 
        String msg1 = "Euro:"+MailA.this.euro1+","+MailA.this.cent1+" "+"Motivazione:"+MailA.this.motivazione+"\n"; 
        String msg3 = "Euro:"+MailA.this.euro3+","+MailA.this.cent3+" "+"Motivazione:"+MailA.this.motivazione2+"\n"; 
        String msg4 = "Euro:"+MailA.this.euro4+","+MailA.this.cent4+" "+"Motivazione:"+MailA.this.motivazione4+"\n"; 
        String msg5 = "Euro:"+MailA.this.euro5+","+MailA.this.cent5+" "+"Motivazione:"+MailA.this.motivazione5+"\n"; 
        String msg6 = "Euro:"+MailA.this.euro6+","+MailA.this.cent6+" "+"Motivazione:"+MailA.this.motivazione6+"\n"; 
        String msg7 = "Euro:"+MailA.this.euro7+","+MailA.this.cent7+" "+"Motivazione:"+MailA.this.motivazione7+"\n"; 
        String msg8 = "Euro:"+MailA.this.euro8+","+MailA.this.cent8+" "+"Motivazione:"+MailA.this.motivazione8+"\n"; 
        String msg9 = "Euro:"+MailA.this.euro9+","+MailA.this.cent9+" "+"Motivazione:"+MailA.this.motivazione9+"\n"; 

       } 
       sh.putExtra(Intent.EXTRA_TEXT, msg1+msg3+msg4+msg5+msg6+msg7+msg8+msg9); 

Строки не могут назвать, почему?

ответ

1

Вы могли бы хотят, чтобы сделать это вместо:

  • Сначала объявить переменную (вне скобки для того, чтобы быть после того, как их подъезд)
  • Присвоить значение
  • Используйте их

Но код ниже НАСТОЛЬКО повторяющиеся и вы должны избегать делать это таким образом. См конец альтернативного

String msg1, msg2, msg3, msg4, msg5, msg6, msg7, msg8, msg9; 
    if ((euro9 == 0) && (cent9 == 00)) 
    { 
     msg1 = "Euro:" + MailA.this.euro1 + "," + MailA.this.cent1 + " " + "Motivazione:" 
       + MailA.this.motivazione + "\n"; 
     msg3 = "Euro:" + MailA.this.euro3 + "," + MailA.this.cent3 + " " + "Motivazione:" 
       + MailA.this.motivazione2 + "\n"; 
     msg4 = "Euro:" + MailA.this.euro4 + "," + MailA.this.cent4 + " " + "Motivazione:" 
       + MailA.this.motivazione4 + "\n"; 
     msg5 = "Euro:" + MailA.this.euro5 + "," + MailA.this.cent5 + " " + "Motivazione:" 
       + MailA.this.motivazione5 + "\n"; 
     msg6 = "Euro:" + MailA.this.euro6 + "," + MailA.this.cent6 + " " + "Motivazione:" 
       + MailA.this.motivazione6 + "\n"; 
     msg7 = "Euro:" + MailA.this.euro7 + "," + MailA.this.cent7 + " " + "Motivazione:" 
       + MailA.this.motivazione7 + "\n"; 
     msg8 = "Euro:" + MailA.this.euro8 + "," + MailA.this.cent8 + " " + "Motivazione:" 
       + MailA.this.motivazione8 + "\n"; 
     msg9 = ""; 

    } 

    if ((euro9 != 0) && (cent9 != 00)) 
    { 
     msg1 = "Euro:" + MailA.this.euro1 + "," + MailA.this.cent1 + " " + "Motivazione:" 
       + MailA.this.motivazione + "\n"; 
     msg3 = "Euro:" + MailA.this.euro3 + "," + MailA.this.cent3 + " " + "Motivazione:" 
       + MailA.this.motivazione2 + "\n"; 
     msg4 = "Euro:" + MailA.this.euro4 + "," + MailA.this.cent4 + " " + "Motivazione:" 
       + MailA.this.motivazione4 + "\n"; 
     msg5 = "Euro:" + MailA.this.euro5 + "," + MailA.this.cent5 + " " + "Motivazione:" 
       + MailA.this.motivazione5 + "\n"; 
     msg6 = "Euro:" + MailA.this.euro6 + "," + MailA.this.cent6 + " " + "Motivazione:" 
       + MailA.this.motivazione6 + "\n"; 
     msg7 = "Euro:" + MailA.this.euro7 + "," + MailA.this.cent7 + " " + "Motivazione:" 
       + MailA.this.motivazione7 + "\n"; 
     msg8 = "Euro:" + MailA.this.euro8 + "," + MailA.this.cent8 + " " + "Motivazione:" 
       + MailA.this.motivazione8 + "\n"; 
     msg9 = "Euro:" + MailA.this.euro9 + "," + MailA.this.cent9 + " " + "Motivazione:" 
       + MailA.this.motivazione9 + "\n"; 

    } 
    sh.putExtra(Intent.EXTRA_TEXT, msg1 + msg3 + msg4 + msg5 + msg6 + msg7 + msg8 + msg9); 

Я настоятельно рекомендовал Вам следующий подход вместо того, что выше.

Создание объекта в отдельном файле

public class MyObject 
{ 
    public String euro; 
    public String cent; 
    public String motivazione; 

    public MyObject(String euro, String cent, String motivazione) 
    { 
     this.euro = euro; 
     this.cent = cent; 
     this.motivazione = motivazione; 
    } 
} 

и использовать его

 // Create an instance of MyObject 
    MyObject obj = new MyObject("asdad", "fcsfc", "fdsf"); 

     // Initialize a list that will hold all instances 
    HashMap<Integer, MyObject> list = new HashMap<Integer, MyObject>(); 
    list.put(1, obj); 
    // OR 
    list.put(2, new MyObject("aaaaaaaa", "bbbbbbb", "ccccccc")); 

    // And retrieve your item with 
    MyObject my = list.get(2); 

В конце концов, вы будете в состоянии сделать что-то вроде:

if (condition) 
    { 
     for (Map.Entry<Integer, MyObject> entry : list.entrySet()) 
     { 
      MyObject currentObject = entry.getValue(); 
      msg += "Euro:" + currentObject.euro + "," + currentObject.cent + " " + "Motivazione:" 
        + currentObject.motivazione + "\n"; 
     } 
    } 
sh.putExtra(Intent.EXTRA_TEXT, msg); 
+0

Ваше рекомендуемое решение - полный перебор. Построение нового класса. Создание объектов этого нового типа класса. Создание карты для размещения в ней этих объектов. Затем перебираем эти объекты. Все, чтобы построить строку? Нет. Вы взяли код, который был довольно минимальным, и усложнили его добавлением новых ненужных классов и циклов. – dymmeh

+0

Класс может быть чрезмерным или нет, но цикл лучше всего, чем все эти нечитаемые коды с именами переменных__имя ... –

+0

Используйте StringBuilder, если это вызывает беспокойство. Это далеко не невозможно. – dymmeh

2

Объявите Струны (msg1, msg3 и т.д.) из стороны, если петля

область локального varibles вы используете может быть подъездом внутри, если условие только обусловлены вас объявляя их внутри, если условие

+0

Где вы видите цикл здесь? – Henry

+0

Я имею в виду, если заявление –

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