我想以编程方式使用内容变量更改字符串值

时间:2013-11-12 16:19:15

标签: android eclipse string variables if-statement

我已创建此代码但无法正常运行,我该怎么办? 我希望字符串的内容取决于变量..

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);

字符串无法调用,为什么?

2 个答案:

答案 0 :(得分:2)

如果循环

,则声明字符串(msg1,msg3等)

如果只是条件,您正在使用的局部变量的范围可以访问 因为如果条件

你在里面宣布它们

答案 1 :(得分: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);