当前位置: 首页 > 知识库问答 >
问题:

一个循环,用于在多行条件下检查一个值

虞滨海
2023-03-14

我正在努力解决这个问题。工作内容:我想打印表中的所有3行(将附上示例),并在EID列中显示值。

  1. 我想测试EID1(第一行)的值是否以8开头。(完成)
  2. 我想测试CID1(第一行)的值是否以“M”开头。(完成)
  3. 现在我想循环整个表,并检查每一行的以下条件,例如:(Done)
  4. 如果EID1=

我得到以下错误:无法调用“String.startsWith(String)”,因为java的返回值。util。地图get(object)为空。

我认为这可能是因为行(0)实际上是空的。我可能需要想出一种跳过第一次迭代的方法,否则我的逻辑就有问题了。

    query = "select * FROM PSA.SECOND where T_DATE >'2202-10-10'";
    
    resultSet = statement.executeQuery(Query)
    ResultSetMetaData rsmd = resultSet.getMetaData();
    long pId = 1:
    while (resultSet.next()) {
    for int col = 1; col <= rsmd.getColumnCount(); col ++) {
    result.put(rsmd.getColumnLabel(col)+pId, resultSet.getString(col)); }
    pId ++;
    }
    //print all results in col
    for (int i=0; i<pId;i++)
    System.out.println("EID: "+result.get("EID"+i));

    //problem
    for (int i=0; i<pId;i++)
    if (result.get("EID1").startsWith("8")){
    if result.get("CID1").startsWith("M") {
    System.out.println ("true");
    }
    }

共有2个答案

寿高阳
2023-03-14

你应该使用数据库进行搜索。因此,搜索失败标准,如果没有结果,则打印“true”。

下面是一个基于一些数据假设的示例,用于搜索您的“失败”标准。

select 1
FROM PSA.SECOND
WHERE T_DATE >'2202-10-10'
    AND CID LIKE 'M%'
    AND EID <= 800
LIMIT 1

其优点是,通过在CID上建立索引,EID这可以是一个不涉及整个数据集的搜索,并在第一次失败时停止。

南门鸿哲
2023-03-14

看看这个循环:

for (int i=0; i<pId;i++)
    System.out.println("EID: "+result.get("EID"+i));

每个键值采用EID1EID2等形式。

在您的第二个循环中,您这样做:

for (int i=0; i<pId;i++)
    if (result.get("EID1").startsWith("8")){
        if result.get("CID1").startsWith("M") {
            System.out.println ("true");
        }
    }

您每次都在使用EID1

您需要将循环更改为:

for (int i=0; i<pId;i++)
    if (result.get("EID" + i).startsWith("8")){
        if result.get("CID" + i).startsWith("M") {
            System.out.println ("true");
        }
    }

就像你在第一个循环中做的一样。

 类似资料:
  • 我正在尝试使用一个do while循环来找出用户是想将一只狗还是一只猫检查到Java的养狗系统中。其思想是,当提示时输入“dog”或“cat”,任何输入都将导致错误,并且他们将再次被提示输入文件名。 如果输入了“cat”或“dog”,那么将为程序分配等效的文件(dogs.txt或cats.txt),然后系统将运行并将数据加载到程序中。 以下是当前的变量: 以及导致问题的方法: 下面是运行代码时打印

  • 这是表格的样子: 状态类别列表:(跟踪、批准、审核、接收、测试、关闭) 条件:

  • 问题内容: 我试图通过一次添加一天来遍历while循环,但它甚至第一次都不会访问while循环。while循环中的条件正确吗?当我测试它时,它仅在一种情况下起作用,但在我添加第二种条件时停止了。 问题答案: 它应该是

  • 无法找到这个问题的答案。我有一个mysqli循环语句。在这个循环中,我想运行另一个查询。我不能同时编写这两个sql。可能吗?我想,因为我使用stmt并设置它来准备语句。所以我添加了另一个变量stmt2。单独运行它们是可行的,但像我写的那样运行它会给我“mysqli致命错误:对非对象调用成员函数bind_param()” 伪代码: 答案是: 我真傻,我不知道我必须有两个mysqli连接。所以解决方案

  • 我在编程一个订单提交页面时遇到了一个相当大的问题,该页面的目的是提交一个订单的争议--提供两个字段被填写,但只有当一个字段少于另一个字段时。 基本上,一个是下拉,另一个是争端框,查询如下: 如果DispotestExtBox=“”而下拉框=“请选择...” 一切正常-提交按钮已启用 如果DisportestExtBox!=“”而下拉框=“请选择...” 错误(反之亦然,因此如果填充了Dispone

  • 我只是用PHP和PDO在MySQL数据库中工作进行了一些实验,我有点困惑为什么在得到结果后,将它们正确地存储在多维数组中,并循环通过它们,它会两次输出其中一个数组数据。 基本上,以下是获取数据的查询: 我希望与此得到1行返回每个家庭,它在PHPMyAdmin查询和print_r()结果时都能正常工作。 然后我存储在: 在执行print_r()时,以及在foreach循环中回显每个条目的ID时,它也