You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java水位监测告警程序开发及strukogram制作问题咨询

问题解决说明

一、现有代码已知错误

你当前的代码存在几个基础语法和逻辑漏洞,需要先修正:

  • import路径错误:java.ioException 应为 java.io.IOException
  • 方法调用语法错误:fw.close 应为 fw.close()
  • 变量waterLevel未初始化、未赋值就用于循环判断,会直接编译报错
  • 仅实现了水位写入文件的逻辑,缺少读取文件最后一行的相关代码

二、读取文件最后一行存入waterLevel的实现

你可以通过BufferedReader逐行遍历文件内容,每次覆盖存储当前读到的行,遍历完成后最终存储的就是文件最后一行,再转为int类型赋值给waterLevel即可。

修正后的完整可运行代码如下:

import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;

public class Dam{ 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int waterLevel = 0; // 初始化默认值
        String text;

        do { 
            System.out.println("give the current water level");
            // 写入水位到文件,这里用try-with-resources自动关流,无需手动写close
            try (FileWriter fw = new FileWriter("waterLevel.txt")) {
                int inputLevel = sc.nextInt();
                text = inputLevel + "\n";
                fw.write(text, 0, text.length());
            } catch (IOException e) {
                e.printStackTrace();
            }

            // 读取文件最后一行赋值给waterLevel
            String lastLine = "";
            try (BufferedReader br = new BufferedReader(new FileReader("waterLevel.txt"))) {
                String currentLine;
                while ((currentLine = br.readLine()) != null) {
                    lastLine = currentLine; // 逐行覆盖,最终保留最后一行
                }
                waterLevel = Integer.parseInt(lastLine.trim());
            } catch (Exception e) {
                e.printStackTrace();
            }

        } while (waterLevel < 15);

        System.out.println("warning");
        sc.close();
    }
}

三、对应Strukogram(结构化程序图)的制作说明

按照逻辑从上到下分层绘制即可,结构参考:

  1. 最顶层:程序启动 / public class Dam
  2. 第一层:声明变量(Scanner输入对象、int waterLevel=0、字符串变量text)
  3. 第二层:循环块(循环条件:waterLevel < 15)
    • 循环内顺序步骤1:控制台输出输入水位提示
    • 循环内顺序步骤2:读取用户输入的水位值
    • 循环内顺序步骤3:异常处理块(try-catch),执行写入水位到文件的操作
    • 循环内顺序步骤4:异常处理块(try-catch),读取文件最后一行转整型赋值给waterLevel
  4. 第三层:跳出循环后,控制台输出预警信息warning
  5. 最底层:程序结束

内容的提问来源于stack exchange,提问作者Alaadin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:54:10