Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java读取/提取数据并放入变量_Java - Fatal编程技术网

使用java读取/提取数据并放入变量

使用java读取/提取数据并放入变量,java,Java,嘿,我有个问题。我正在尝试编写程序的一部分。我需要它做的是读取一个名为marks.txt的文档,然后提取文档中的数据并将其放入变量中,这样我就可以计算总数 文档的布局非常简单 Assessment1 41 Assessment2 41 Assessment3 41 运行代码时,已声明的变量保持为NULL 这是程序中该部分的代码 public void readMarks() { try { doc = new File ("marks.txt");

嘿,我有个问题。我正在尝试编写程序的一部分。我需要它做的是读取一个名为marks.txt的文档,然后提取文档中的数据并将其放入变量中,这样我就可以计算总数

文档的布局非常简单

Assessment1 41
Assessment2 41
Assessment3 41
运行代码时,已声明的变量保持为NULL

这是程序中该部分的代码

public void readMarks() 
{
    try {
        doc = new File ("marks.txt");

        if(!doc.exists())
        {
            System.out.println ("Marks.txt Does Not Exist");
        }

        Scanner input = new Scanner(doc);

        while (input.hasNext()) {
            String Assessment1 = input.next();
            int mark1 = input.nextInt();
            String Assessment2 = input.next();
            int mark2 = input.nextInt();
            String Assessment3 = input.next();
            int mark3 = input.nextInt();
        }  

        input.close();
    }
    catch (FileNotFoundException ex) {
        System.err.println("File has not been found");
    } 

}

您需要执行以下操作:

  • 将存储赋值名称和标记的变量声明移到循环之外
  • 循环结束后,求变量和并将此和写入文件

  • 您可能可以使用
    映射
    来存储分配及其标记,在遍历
    扫描仪
    返回的值时,在
    映射
    中添加标记。然后,您将遍历
    映射
    ,计算总和并将其写入文件。

    在循环中声明变量从来都不是一个好主意。我已经尝试过这个解决方案,它工作得非常完美,如果您有任何问题,可能与marks.txt位于不正确的位置有关

    public static void readMarks() 
      {
          String Assessment1 = null, Assessment2 = null, Assessment3 = null;
          int mark1 = 0,mark2 = 0,mark3 = 0;
           try {
           File doc = new File ("marks.txt");
           if(!doc.exists())
           {
            System.out.println ("Marks.txt Does Not Exist");
           }
           Scanner input = new Scanner(doc);
             while (input.hasNext()){
              Assessment1 = input.next();
              mark1 = input.nextInt();
              Assessment2 = input.next();
              mark2 = input.nextInt();
              Assessment3 = input.next();
              mark3 = input.nextInt();
    
            }  
          input.close();
          System.out.println(Assessment1 + " "+mark1 + Assessment2 +mark2+ " " + Assessment3 +mark3+ " ");
        }
        catch (FileNotFoundException ex) {
          System.err.println("File has not been found");
        } 
    
         }
    

    如果您有任何疑问,请毫不犹豫地询问

    ,问题是什么?你不能做
    int sum=mart1+mark2+mark3?问题是什么?问题是我无法提取它们的值变量只是保持空值,即文本文档中的值没有放入mark 1、mark2或mark3变量中。您在评估1/2/3中得到了什么?您是否只有“Assessment1/2/3”或数字(即Assessment1 41)?文本文档的格式类似于上文格式的Assessment1 25 Assessment2 63 Assessment3 16忘了说,如果您要汇总分数,请声明一个变量int sum=0;循环外,包括sum+=mark1+mark2+mark3;循环是错误的,因为input.hasNext()不能确保您有3行要读,如果您只有评估1呢?那位先生已经完成了:D非常感谢!!同时也感谢所有帮助过你的人:D!