Java 将从输入文件读取的值排列到预定义的空间/块中
我从一个文本文件中读取数据,其格式类似于名称连字符值,例如Java 将从输入文件读取的值排列到预定义的空间/块中,java,java-io,Java,Java Io,我从一个文本文件中读取数据,其格式类似于名称连字符值,例如John-0.75。值为平方英尺,我想将它们分配到空间中。我有四个预定义的空间,即space1、space2、space3和space4。space1和space2总面积为4平方英尺。space3和space4总面积为5平方英尺 输入值也可以是一个称为间隔的值,表示1/6平方英尺。理想情况下,它们可能进入第三空间和第四空间。我尝试开发的解决方案应该适用于不同的输入类型。以下是迄今为止我们所做的 public class SpaceAllo
John-0.75
。值为平方英尺,我想将它们分配到空间中。我有四个预定义的空间,即space1、space2、space3和space4。space1和space2总面积为4平方英尺。space3和space4总面积为5平方英尺
输入值也可以是一个称为间隔的值,表示1/6平方英尺。理想情况下,它们可能进入第三空间和第四空间。我尝试开发的解决方案应该适用于不同的输入类型。以下是迄今为止我们所做的
public class SpaceAllocator {
public static void main(String[] args) throws IOException {
double space1= 4.0;
double space2 = 4.0;
double space3= 5.0;
double space4 = 5.0;
BufferedReader buffReader = null;
try {
buffReader = new BufferedReader(new FileReader(new File("input.txt")));
String line = null;
String name = null;
double sqrFeet = 0.0;
double space1Counter = 0.0;
double space2Counter = 0.0;
double space3Counter = 0.0;
double space4Counter = 0.0;
double sqrFeetSum = 0.0;
while ((line = buffReader.readLine()) != null){
String[] tempArr = line.replace("'", "").split("-");
name = (tempArr[0]!=null)?tempArr[0].trim():"";
if(tempArr[1]!=null && "spacer".equalsIgnoreCase(tempArr[1].trim())){
sqrFeet = 0.166;
} else {
sqrFeet = Double.parseDouble( (tempArr[1]!=null)?tempArr[1].trim():"0");
}
sqrFeetSum +=sqrFeet;
if(sqrFeetSum <space1 && space1Counter<space1 ){
space1Counter++;
} else if( sqrFeetSum == space1 ){
sqrFeetSum =0.0;
space1=0.0;
} else if( sqrFeetSum <space2 && space2Counter<space2){
space2Counter++;
} else if(sqrFeetSum == space2){
sqrFeetSum =0;
space2=0;
} else if( sqrFeetSum <space3 && space3Counter<space4){
space3Counter++;
} else if(sqrFeetSum == space3){
sqrFeetSum =0;
space3 =0.0;
} else if( sqrFeetSum <space4 && space4Counter<space4){
space4Counter++;
} else if(sqrFeetSum == space4){
sqrFeetSum =0;
space4=0.0;
}
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
buffReader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
输出这样的东西,不完全是
space 1
John
Jack
....
space 2
Smith
Lucy
...
space 3
Ortez
....
space 4
Jackie
....
有什么建议吗?我有几个建议:
空间
类,该类具有一个add()
方法来向该空间添加人员。此类将封装1和2中建议的名称的总和和列表这里的问题到底是什么?我试图分配值/用户,但似乎无法正确分配。这听起来像是。除了不超过每个“空间”的大小之外,还有其他限制吗?@Code peedint是的。只需将它们分配到预定义的空间中,除了不超过预定义空间的大小之外,没有其他约束。谢谢您的回答。我被任务部分卡住了。对于与空格关联的名称,我想我需要一个HashMap hm=newhashmap();用于打印零件。
space 1
John
Jack
....
space 2
Smith
Lucy
...
space 3
Ortez
....
space 4
Jackie
....