java - 计算最终长度

标签 java string

以下代码将重复的名称分成 1 列,并将与名称关联的数字总和分成第二列。

喜欢:

   Nokia 21

   Blackberry 3

   Nimbus 30

来自程序中给出的数组。

<小时/>

我想知道包含这些条目的数组的最终长度。在这种情况下 3. 我如何计算?

package keylogger;
import java.util.ArrayList;
import java.util.List;

public class ArrayTester {

private static int finalLength = 0;
private static String Name[][];
private static String data[][] = { 
                               {"Nokia" , "7"},
                               {"Blackberry" ,"1"},
                               {"Nimbus","10"},
                               {"Nokia" , "7"},
                               {"Blackberry" , "1"},
                               {"Nimbus","10"},
                               {"Nokia" , "7"},
                               {"Blackberry" , "1"},
                               {"Nimbus","10"}

                          };  

public void calculator() {

    Name = new String[data.length][2];
    List<String> marked = new ArrayList<String>();
    try {
        for(int i=0;i<data.length;i++) {
            Name[i][0] = data[i][0];
            Name[i][1] = data[i][1];
            String name = data[i][0];
            if(marked.contains(name)) {

                continue;
            }
            marked.add(name);
            int k = i + 1;
            int v = k;
            for (int j = 0; j < data.length - v; j++) {
                String s = data[k][0];
                if(Name[i][0].equalsIgnoreCase(s)) {
                    Name[i][0] = s;
                    Integer z = Integer.parseInt(Name[i][1]) + Integer.parseInt(data[k][1]);
                    Name[i][1] = z.toString();
                }
                k++;
            }

        }
    }catch(Exception exc) {
        exc.printStackTrace();
    }
}

public static void main(String args[]) {
    ArrayTester o = new ArrayTester();
    o.calculator();
    for(String s[] : Name) {
        for(String x : s) {
            System.out.println(x);
        }
    }
}

}

最佳答案

像往常一样,“问题”是糟糕的编码。如果编写得当,整个程序可以减少到只有 3 行代码(如果包括定义数组和打印输出,则为 5 行):

public static void main(String[] args) {
    String data[][] = {{"Nokia", "7"}, {"Blackberry", "1"}, {"Nimbus", "10"},
        {"Nokia", "7"}, {"Blackberry", "1"}, {"Nimbus", "10"}, {"Nokia", "7"},
        {"Blackberry", "1"}, {"Nimbus", "10"}, {"Zebra", "78"}};

    HashMap<String, Integer> totals = new HashMap<String, Integer>();
    for (String[] datum : data)
        totals.put(datum[0], new Integer(datum[1]) + (totals.containsKey(datum[0]) ? totals.get(datum[0]) : 0));
    System.out.println("There are " + totals.size() + " brands: " + totals);
}

输出:

There are 4 brands: {Nimbus=30, Zebra=78, Nokia=21, Blackberry=3}

关于java - 计算最终长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10754764/

相关文章:

java - Spring Integration WebFlux.outboundGateway 永远不会被调用

java - Bluemix Liberty Buildpack 中特定于应用程序的日志文件

比较 C 中的 2 个字符值

java - 如何编写 ASTM 框架并将其发送到医疗设备

python - 如何在Python中减去2个字符串或列表?

java - 根据选定的 JComboBox 项目更改 JTextArea 颜色

java - Thymeleaf 到 madal jquery

c - 如何检查字符串是否为数字?

java - 将 JPanel 添加到 JPanel 的右侧或左侧

c - C 中的反向函数产生单词然后产生垃圾