如果任何人都可以提供幫助, 我有問題將文本文件中的值分配給類字段。 我創建了一個類叫的過程,它有一個像從txt文件讀取並將行的值分配給類字段
private String agent;
private String request_type;
private String class_type;
private String num_of_seats;
private String arrivaltime;
我的動機一個領域是在文件中指定1block由空格分開的另一個塊請求類型等等... 說Agent3 R F 10 1
這裏劑Agent3將分配給代理和R將分配給request_type F到class_type,10到num_of_seats,1到達時間
我使用arraylist來保存輸入文件(不是強制性的,我知道這只是y)和另一個arraylist保存我的類的對象。我使用substring方法手動分配值有沒有辦法,以便我可以簡單地採取塊瓦特這是由太空分開,做我的工作。
輸入文件(input.txt中是)
Agent1 R F 2 0
Agent3 R F 10 1
Agent1 C F 1 4
Agent2 C B 2 1
Agent2 R B 10 0
.............................. ..................................................
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author Navdeep
*
*/
class Process
{
private String agent;
private String request_type;
private String class_type;
private String num_of_seats;
private String arrivaltime;
public Process()
{
setProcess("0", null, null, "0", "0");
}
public Process(String a, String b,String c,String d,String e)
{
setProcess(a,b,c,d,e);
}
public void setProcess(String a, String b,String c,String d,String e)
{
setAgent(a);
setRequest_type(b);
setClass_type(c);
setNum_of_seats(d);
setArrivaltime(e);
}
public void setAgent(String a){
agent = a;
}
public void setRequest_type(String b){
request_type = b;
}
public void setClass_type(String c)
{
class_type = c;
}
public void setNum_of_seats(String d) {
num_of_seats = d;
}
public void setArrivaltime(String e)
{
arrivaltime=e;
}
public String getAgent(){
return agent;
}
public String getRequest_type(){
return request_type ;
}
public String getClass_type()
{
return class_type;
}
public String getNum_of_seats() {
return num_of_seats ;
}
public String getArrivaltime()
{
return arrivaltime;
}
@Override
public String toString() {
return String.format("%s,%s,%s,%s,%s",getAgent(),getRequest_type(),getClass_type(),getNum_of_seats(),getArrivaltime());
}
}
public class main
{
public static void main(String[] args) throws FileNotFoundException
{
File temp = new File(args[0]);
Scanner sc = new Scanner(temp);
ArrayList<String> input = new ArrayList<String>();
while(sc.hasNext())
{
input.add(sc.nextLine());
}
List<Process> mylist = new ArrayList<Process>();
for (int i= 0; i <input.size();i++)
{
Process processobject = new Process();
processobject.setAgent(input.get(i).substring(0, 6));
processobject.setRequest_type(input.get(i).substring(7,8));
processobject.setClass_type(input.get(i).substring(9,10));
if(input.get(i).length() == 15)
{
processobject.setNum_of_seats(input.get(i).substring(11,13));
processobject.setArrivaltime(input.get(i).substring(14,15));
}
if(input.get(i).length() == 14)
{
processobject.setNum_of_seats(input.get(i).substring(11,12));
processobject.setArrivaltime(input.get(i).substring(13,14));
}
mylist.add(processobject); // fill arraylist with objects of my class
}
System.out.println("array list of the input from the file" + input);
System.out.println("\n \nobjects in my list"+ mylist);
}
}
我的項目的總體動機是根據領域優先級對對象進行排序。
可能你的過程對象在將來不應該改變,所以也許你應該考慮讓字段最終,然後刪除設置方法來獲得不錯的不可變對象。 – Zano
@Zano還沒有讓你明確指出你的意思 – Nav
我只是說,可能你不想讓任何人或任何東西在將來改變你的過程對象值。如果是這樣,那麼使它不可變,如果不是,那麼忽略我以前的骯髒評論。 – Zano