索引与链表中多个元素的乘积



我使用链表读取一个文本文件。

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; 
    }
}
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;

每行/行使用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");
    }

到目前为止,您已经很好地定义了Box类来编码文件的每一行。您缺少的部分是从文件的每一行映射到Box对象。

您可以使用new操作符创建一个新的Box对象:new Box(l, w, h) .

下一步是从文件中的一行获取长度、宽度和高度。您已经弄清楚了如何将该行放入String变量中。下一步是使用Stringsplit方法来提取这些值。例如:

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类的定义,但是您已经在您的问题中定义了这些。

记住这一点,试着把这些部分组合在一起,构建将文件转换为Box对象的List的方法。

相关内容

  • 没有找到相关文章