草庐IT

java - 如何将包含整数和字符串的文本文件读入数组

coder 2024-04-01 原文

我读入了一个包含整数和字符串的文本文件,我需要使用所有四种信息来计算:

  1. 吞吐量
  2. 平均等待时间
  3. 平均周转时间
  4. 使用先来先服务和最短剩余时间处理器算法的操作系统的 CPU 空闲时间。 (此外,页面错误正在作为字符串读取,但在文本文件中看起来像这样:"12, 7, 5, 79")

我应该使用什么样的数组来执行此操作以及我应该如何实现它?这是我正在努力解决的部分。

这是我目前所拥有的:

import java.io.File;
import java.util.Scanner;

public class TextFile {
    public static void main(String[] args) throws Exception {
        Scanner input = new Scanner(new File("JobQueue.txt"));

        String jobName;
        int arrivalTime;
        int cpuTime;
        String pageFault;

        while (input.hasNext()) {
            jobName = input.next();
            arrivalTime = input.nextInt();
            cpuTime = input.nextInt();
            pageFault = input.next();

            System.out.printf("\n%s %d %d %s\n", jobName, arrivalTime, cpuTime, pageFault);
        }
    }
}

04/22 编辑:
异常:

java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at TextFile.main(TextFile.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

这是我到目前为止编写的代码:

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

public class TextFile {
    public static void main(String[] args) throws Exception {
        Scanner input = new Scanner(new File("JobQueue.txt"));
        ArrayList<DataObject> list = new ArrayList<DataObject>();

        while (input.hasNext()) {
            String jobName = input.next();
            int arrival = input.nextInt();
            input.nextLine();
            int cpuTime = input.nextInt();
            input.nextLine();
            String inturrupt = input.next();

            DataObject data = new DataObject(jobName, arrivalTime, cpuTime, pageFault);
            list.add(data);
        }
    }
}

和:

public class DataObject {
    private String jobName;
    private int arrivalTime;
    private int cpuTime;
    private String pageFault;

    public DataObject(String job, int arrival, int cpu, String interrupt) {
        jobName = job;
        arrivalTime = arrival;
        cpuTime = cpu;
        pageFault = interrupt;
    }

    public void setjobName(String job) {
        jobName = job;
    }

    public String getJobName() {
        return jobName;
    }

    public void setArrivalTime(int arrival) {
        arrivalTime = arrival;
    }

    public int getArrivalTime() {
        return arrivalTime;
    }

    public void setcpuTime(int cpu) {
        cpuTime = cpu;
    }

    public int getcpuTime() {
        return cpuTime;
    }

    public void setPageFault(String interrupt) {
        pageFault = interrupt;
    }

    public String getPageFault() {
        return pageFault;
    }

    public String toString() {
        return String.format("\n%s %d %d %s\n", getJobName(), getArrivalTime(), getcpuTime(), getPageFault());
    }
}

编辑 #2

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.IOException;

public class TextFile
 {
  public static void main(String[] args) throws IOException
  {
   Scanner input = new Scanner(new File("JobQueue.txt"));

   ArrayList<DataObject> list = new ArrayList<DataObject>(); 

   while(input.hasNext())
   {
    String jobName = input.next();
    int arrivalTime = input.nextInt();
    int cpuTime = input.nextInt();
    String pageFault = input.next();

    DataObject data = new DataObject(jobName, arrivalTime, cpuTime, pageFault);
    list.add(data);
   }
  }
 }

示例作业队列:

J1  0   90  "7,27,73,86"
J2  1   39  "12"
J3  2   195 "11,31,73,94,120,134,183"
J4  3   198 "7,25,57,83,112,138,190"
J5  4   103 "11,26,58,94"
J6  5   158 "15,39,63,79,120,144"
J7  6   168 "9,46,66,84,125,147"

最佳答案

为此,数据库 ORM 样式的方法是创建一个代表文件中每一行的类:

public class RecordObject {
    private String jobName;
    private int arrivalTime;
    private int cpuTime;
    private String pageFault;

    public RecordObject(String jobName, int arrivalTime, int cpuTime, String pageFault) {
        this.jobName = jobName;
        this.arrivalTime = arrivalTime;
        this.cpuTime = cpuTime;
        this.pageFault = pageFault;
    }

    // getters and setters
}

然后创建一个 ArrayList 来存储文件中任意数量的行:

ArrayList<RecordObject> list = new ArrayList<RecordObject>();

while(input.hasNext()) {           // <-- this is your original code
    jobName = input.next();
    arrivalTime = input.nextInt();
    cpuTime = input.nextInt();
    pageFault = input.next();

    RecordObject record = new RecordObject(jobName, arrivalTime, cpuTime, pageFault);
    list.add(record);
}

读取完整个文件后,您可以像这样遍历 ArrayList:

for (RecordObject record : list) {
    // compute throughput, average waiting time, etc...
}

关于java - 如何将包含整数和字符串的文本文件读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29665448/

有关java - 如何将包含整数和字符串的文本文件读入数组的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  4. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  5. ruby-on-rails - unicode 字符串的长度 - 2

    在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)

  6. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  7. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  10. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

随机推荐