【问题标题】:For loop runs twice the result?For循环运行两倍的结果?
【发布时间】:2020-01-15 00:37:00
【问题描述】:

我是 Android 新手。我正在使用蓝牙为 printng 创建本机 MobilePOS Android 应用程序。这是我的代码:

private void showandadd() {
        /*String num="";
        num=num+String.valueOf(number);*/
        String string1="";
        String string2="";
        String string3="";


        if(num==""){
            Toast.makeText(this,"Wrong input!! try again", Toast.LENGTH_LONG).show();
        }
        if(flag==1) {
            getItem(directadd);
            if(blankflag!=1) {
                int updatedPrice = Integer.parseInt(this.price);
                int data = Integer.parseInt(this.num);
                if(data==0){
                    Toast.makeText(this,"Wrong input!! insert different quantity number", Toast.LENGTH_LONG).show();
                }else {
                    int d = updatedPrice * data;
                    this.price = d + "";

                    // String str = itemName + "      \t" + num + " No" + "      \t" + "Rs " + price;
                    printdetailsnew.add(itemName);
                    quantitynum.add(num);
                    amount.add(price);
                    num = "";
                    directadd = "";
                    flag = 0;
                    blankflag = 0;
                }
            }
            num = "";
            directadd = "";
            flag = 0;
            blankflag = 0;

        }else {
            getItem(directadd);
            if(blankflag!=1) {
                //String str = itemName + "      \t" + num + " No" + "      \t" + "Rs " + price;
                printdetailsnew.add(itemName);
                quantitynum.add("1");
                amount.add(price);
                num = "";
            }
            directadd="";
            blankflag=0;
        }
        for(int i=0;i<printdetailsnew.size();i++){
            string1=string1+ printdetailsnew.get(i)+"\t"+"\n";
            string2=string2 +"No."+ quantitynum.get(i)+"\t"+"\n";
            string3= string3 + amount.get(i)+"\n";

            result = printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

            System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+result);


        }

        this.selection.setText(string1);
        this.selection2.setText(string2);
        this.selection3.setText(string3);
        num="";
    }

有 3 个字符串分配给结果。 当我按第二项时,我得到了两次结果。 当我选择第一项获得“项目名称数量数量”格式时 Tea 1qty 10rs...当我输入第二个项目时,输出将是第一个项目+第一个项目+第二个项目显示如下:

Tea 1qty 10rs
Tea 1qty 10rs
Coffee 1qty 12rs

我想得到结果

Tea 1qty 10rs
Coffee 1qty 12rs

像这样......请任何人都可以帮助我

【问题讨论】:

  • 您确定数据没有两次添加到列表中吗?
  • 您的问题是,每次添加新项目时,您都在循环浏览您添加的 所有 项目。您要确保每个标签只循环 一个 项。至少这是我从你想要达到的目标中理解的。为什么你有 3 个字符串和 3 个标签?如果您正在制作 POS 系统,您可能希望动态生成创建的标签数量,或者只使用 1 个标签并在每次添加新项目时添加新行。如果您可以确认这是您想要实现的目标,我可以尝试向您展示一个示例。
  • 好的..有任何示例吗?
  • 我正在发送打印活动结果将类似于上述格式

标签: android sqlite pos


【解决方案1】:

一个简单的例子是使用一个标签并在每次添加新项目时附加到它。

而不是这个:

for(int i=0;i<printdetailsnew.size();i++){
        string1=string1+ printdetailsnew.get(i)+"\t"+"\n";
        string2=string2 +"No."+ quantitynum.get(i)+"\t"+"\n";
        string3= string3 + amount.get(i)+"\n";

        result = printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+result);


    }

    this.selection.setText(string1);
    this.selection2.setText(string2);
    this.selection3.setText(string3);
    num="";

改成这样:

str = this.selection.getText().toString();
str += printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

this.selection.setText(str);
num="";

【讨论】:

  • 这可以在for循环内部使用,也可以在for循环外部使用...?
  • 您不需要 for 循环,因为我知道每次添加项目时都会调用您的方法。此代码将自动获取带有当前项目的前一个字符串并附加到它。
  • 好的..但是我怎样才能解析 str 这个活动来打印活动......你告诉我不需要循环的一件事..锄头我能得到(i)......吗?
  • 好的..但是我怎样才能解析str这个活动来打印活动......你告诉不需要循环的一件事..锄头我能得到(i)......吗?str += printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";
  • 我不是 100% 确定您要做什么。但是,如果您尝试创建一种将项目添加到 POS 篮子的方法,那么您应该不需要循环。通常,您将创建一个数组并将所有 POS 项目存储在其中(您可以使其多维以存储诸如价格之类的内容和名称)。然后,当您添加一个项目时,您的方法将简单地附加该列表,然后它可以附加 GUI 标签或在整个数组中运行循环以完全重绘标签。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2011-04-27
  • 2018-10-23
  • 2016-02-22
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多