首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为邮政编码赋值

为邮政编码赋值
EN

Stack Overflow用户
提问于 2015-11-25 16:56:20
回答 5查看 234关注 0票数 0

我尝试做的是将一个数值赋给一组邮政编码,然后在稍后的程序中使用该数值进行计算。我现在所拥有的是

代码语言:javascript
运行
复制
if (zip == 93726 || zip == 93725 || zip == 92144) {
    return 100;
  }

else if (zip == 94550 || zip == 34599 || zip == 77375) {
    return 150;
  }

然后我把这个变量用在计算中。将数字赋值给变量和计算都可以,但我遇到的显然是android只允许你有这么多行代码,并且我已经用光了使用if else语句的行数。我的问题是,这样做会更好吗?

我并不是想给每个zip指定一个城市,因为我已经看到他们在其他海报上提供了这样的服务。

EN

Stack Overflow用户

发布于 2015-11-25 17:12:03

您可以创建一个Map,将每个邮政编码映射到一个整数。例如:

代码语言:javascript
运行
复制
Map<Integer, Integer> zipCodeMap = new HashMap<>();
zipCodeMap.put(93726, 100);

稍后,您可以从那里检索值。

代码语言:javascript
运行
复制
Integer value = zipCodeMap.get(93726);

现在,您仍然需要将每个邮政编码映射到一个值。我不会用Java代码这样做,而是使用数据库或从文本文件(例如csv)中读取。这主要取决于您的需求。

示例csv文件:

代码语言:javascript
运行
复制
93726, 100
93727, 100
93726, 150

从csv文件读取:

代码语言:javascript
运行
复制
InputStream is = this.class.getResourceAsStream("/data.csv");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
try {
    String line;
    while ((line = reader.readLine()) != null) {
        String[] row = line.split(",");
        int zip = Integer.parseInt(row[0].trim());
        int value = Integer.parseInt(row[1].trim());
        zipCodeMap.put(zip, value);
    }
}
catch (IOException ex) {
    // handle exceptions here
}
finally {
    try {
        is.close();
    }
    catch (IOException e) {
        // handle exceptions here
    }
}
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33912102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档