我使用链接列表读取了一个文本文件。
20 10 8
4.5 8.45 12.2
8.0 2.5 4.0
1.0 15.0 18.0
3.5 3.5 3.5
6.0 5.0 10.0
每列分别代表长度,宽度和高度。
当我读取文本文件时,每一行都被视为一个节点。 我试着看看是否有办法找到每一行的产品量?
如果它不可能,那么我需要找到一种方法来调用读取的值,单独(l,w,h)来自另一个我已经创建了getVolume方法的类( )。
到目前为止,这是我的代码:一如既往地感谢您的所有帮助!
import java.util.LinkedList;
import java.util.*;
import java.io.*;
public class Runtime2 {
public static void main(String args[])throws Exception {
String content = new String();
int count=0;
File file = new File("dims.txt");
LinkedList<String> list = new LinkedList<String>();
try {
Scanner sc = new Scanner(new FileInputStream(file));
while (sc.hasNextLine()){
content = sc.nextLine();
list.add(content);
}
sc.close();
}
catch (Exception e) {
e.printStackTrace();
System.out.println();
}
Iterator i = list.iterator();
while (i.hasNext()) {
System.out.print("Node " + count++ + ": ");
System.out.println(i.next());
}
public class Box {
double length;
double width;
double height;
Box(double l, double w, double h ) {
length=l;
width=w;
height=h;
}
double getVolume() {
double vol=length*width*height;
return vol;
}
boolean isCube() {
if(length==width && width==height) {
System.out.println("The box is a cube.");
}
else
System.out.println("The box is not a cube.");
return true;
}
}
答案 0 :(得分:0)
private static double getVol(String line)
// line = "2 3 4.5"
String[] nums = line.split(" ");
int len = nums.length;
double vol = 1;
for (int i = 0 ; i < len; i++){
vol*=Double.parseDouble(nums[i]);
}
return vol;
答案 1 :(得分:0)
每行/每行使用nextDouble
三次:Demo
double a, b, c;
while(sc.hasNextLine()){
a = sc.nextDouble();
b = sc.nextDouble();
c = sc.nextDouble();
Box box = new Box(a, b, c); //System.out.println(a + " " + b + " " + c + "\n");
System.out.println("Volm of box with dimension {" + a + "," + b + "," + c + "} is :" +
box.getVolume() + "\n");
}
答案 2 :(得分:0)
到目前为止,您已经很好地定义了Box
类来编码文件的每一行。您缺少的部分是从文件的每一行映射到Box
对象。
您可以使用Box
运算符创建新的new
对象:new Box(l, w, h)
。
下一步是从文件中的一行获取长度,宽度和高度。您已经知道如何将该行转换为String
变量。下一步是使用String
&#39; s split
method来提取值。例如:
String string = "a b c";
String[] values = string.split(" ");
// values[0] now contains "a";
// values[1] now contains "b";
// values[2] now contains "c";
最后,使用List
add
方法将新的“Box”附加到列表中。我建议您构建代码,以便将文件读取封装在自己的方法中,因此您可以尝试这样的方法:
public class Runtime2 {
public static void main(String args[]) throws Exception {
List<Box> boxes = readBoxesFromFile(new File("dims.txt"));
for (int i = 0; i < boxes.size(); i++) {
System.out.println("Box " + i + " volume: "
+ boxes.get(i).getVolume());
}
}
private static List<Box> readBoxesFromFile(File file) {
List<Box> boxes = new LinkedList<Box>();
/*
* - Create File object
* - Create Scanner for File
* - For each line in the file
* Split the line into a string array
* Create a 'Box' instance
* Add the Box to your list
*/
return boxes;
}
}
我已经省略了导入,以及明确的Box
类的定义,但您已经在问题中定义了这些。
考虑到这一点,请尝试将这些部分放在一起,以构建将文件转换为List
Box
个对象的方法。