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

Java:添加一个布尔检查方法来检查sql表中要复制到文本文件的数据

黄弘深
2023-03-14

我很抱歉这个问题的措辞不好,但这是我陷入困境的地方。

我有一个数据库表,其中包含有关捐赠者的数据,如身份证、姓名、地址、联系人、年龄(34岁以下)和血型。

我必须将基于血型的献血者的数据分类为两个文本文件,即APositive.txtBNegative.txt即A血型的献血者将在APositive.txt中拥有他们的数据,B-血型也是如此。应使用布尔方法验证年龄(int, int)来验证要包含在文本文件中的人的年龄。

以下是我迄今为止所做的工作:

public class Donor {

    public static boolean verifyAge(int age, int maxAge) {
        if (age <= maxAge) 
            return true;
        else 
            return false;
    }

    private static Formatter writeToFileFormatter;
    private static Formatter writeToFileFormatter1;

    public static void main(String[] args) {

        try {
            writeToFileFormatter = new Formatter("APositive.txt");
            writeToFileFormatter1 = new Formatter("BNegative.txt");
        }

        catch(SecurityException se) {
            System.out.println("Access Denied");
            System.exit(1);
        }

        catch(FileNotFoundException fnfe) {
            System.out.println("Error creating file");
            System.exit(1);
        }

        try {

            Connection con = null;
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/examques?autoReconnect=true&useSSL=false", "root", "admin");

            Statement st = con.createStatement();

            ResultSet rs = st.executeQuery("Select * from donor");

            while (rs.next()) {
                int id = rs.getInt("donor_id");
                String name = rs.getString("name");
                String address = rs.getString("address");
                int tel = rs.getInt("tel");
                int age = rs.getInt("age");
                String blood_grp = rs.getString("blood_group");

                if (blood_grp.equals("A+")) {
                    writeToFileFormatter.format("Name: %s Address: %s Contact: %d Age: %d \n", name, address, tel, verifyAge(age, 34));
                }

                if (blood_grp.equals("B-")) {
                    writeToFileFormatter1.format("Name: %s Address: %s Contact: %d Age: %d \n", name, address, tel, verifyAge(age, 34));
                }
            }

            if (writeToFileFormatter != null) {
                writeToFileFormatter.close();
            }

            if (writeToFileFormatter1 != null) {
                writeToFileFormatter1.close();
            }

        }

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

    }

}

下面是我收到的错误截图:

编辑:

谢谢你的回答

我是这样解决的:

if(blood_grp.equals("A+")&& verifyAge(age, 34)==true){    
    writeToFileFormatter.format("Name: %s Address: %s Contact: %d Age: %d \n", name, address, tel,age);
}

if(blood_grp.equals("B-")&&verifyAge(age, 34)==true){
    writeToFileFormatter1.format("Name: %s Address: %s Contact: %d Age: %d \n", name, address, tel, age);
}

共有3个答案

严玉泽
2023-03-14

%d格式正在查找整数值,但传递布尔值是导致该错误的原因。

如果您想打印布尔值是真还是假。请将%d替换为%b

请参阅下面的代码片段以修复此问题,

class Test{
public static void main(String args[]){
    Test a1 = new Test();

    boolean a = false;
    boolean b = true;

    System.out.println(String.format("%b", a));
    System.out.println(String.format("%b", b));
}

}

公良文彬
2023-03-14

可能是这样的:

writeToFileFormatter.format("Name: %s Address: %s Contact: %d Age: %d \n", name, address, tel, verifyAge(age, 34)?1:0);

%d需要一个数字,而不是布尔值。

鞠泰平
2023-03-14

您在"名称:%s地址:%s联系人:%d年龄:%d\n"字符串中使用%dfor age。所以最后一个参数应该是十进制的,但是您的验证年龄()函数返回boolean

 类似资料:
  • 我在Java 8上工作,有一个简单的问题我还没有解决。 我有3个方法来验证来自数据库的数据,并根据它们是否得到一行来返回真或假。棘手的是,即使我知道第一部分返回false,我仍然希望它检查其他两个方法。我已经编写了这样的代码: 问题是,当validateMETOD1()返回false时,它没有调用validateMETOD2()。有人能解释一下为什么吗?我试过了: 仍然面临同样的问题。

  • 当另一个函数的布尔值设置为“True”时,我试图做一些事情。我尝试使用return(variable),但当涉及到请求布尔值的函数时,它总是说False。在问这个问题之前,我看了一下这里,因为我觉得这似乎是非常基本的东西。但我找不到任何有用的东西。我希望有人能帮我做这件事。这是我的代码。

  • 除了相等检查,Jasmine还提供了一些方法来检查布尔条件。 以下是帮助我们检查布尔条件的方法。 toBeTruthy() 此布尔匹配器在Jasmine中用于检查结果是等于true还是false。 以下示例将帮助我们理解toBeTruthy()函数的工作原理。 ExpectSpec.js describe("Different Methods of Expect Block",function (

  • 我正在尝试编写布尔方法,但它不起作用 它的工作,如果我写这个方法: 我应该如何为它制作布尔方法?

  • 问题内容: 我有一个mongo文档,其中包含一个日期字段,该日期字段也可以为false(或未定义),并且似乎无法找到如何检查该字段是否可用或为false或是否为日期(time.Time)的日期golang / mgo:S 问题答案: 如果您有一个字段,并且想知道它是否正确地设置了有效日期,则可以查询其方法。否则,如果您要在数据库中查询此类文档,则可以执行以下操作之一。 查询该字段是否为假: 使用$

  • 当我想检查可选布尔值是否为真时,这样做行不通: 它会导致以下错误: 可选类型“@IvalueBool?”不能用作布尔值;测试'!=而不是零 我不想检查nil;我想检查返回的值是否为真。 如果布尔值==true,我是否总是必须执行