【问题标题】:Getting a particular arraylist element获取特定的数组列表元素
【发布时间】:2013-09-29 23:27:47
【问题描述】:

**请版主删除或锁定这个问题,我现在知道答案了,我没有问清楚问题

好的,抱歉,我的代码中的所有内容都发布了

import java.util.*;
import java.lang.*;
import java.io.*;

public class MinorAssignment_PartB {

    public static void main(String[] args) throws Exception {
        List<StudentMarks> marks = new ArrayList<StudentMarks>();
        String File = "studentinfo.txt";
        Scanner scan = new Scanner(new File(File));
        scan.useDelimiter(",");//makes the delimiter a comma

        while(scan.hasNext()) {
            marks.add(new StudentMarks(scan.next(), scan.next(),
                            scan.nextDouble(), scan.nextDouble(),
                            scan.nextDouble(), scan.nextDouble()));

            System.out.printf("%-23s %-15s %-15s %-15s " +
                    "%-15s %-15s %-15s %-15s %n", "STUDENT  NAME",
                        "STUDENT FAN", "PART A", "PART B", "PARTt C",
                                            "PART D", "MARK", "GRADE");

            for (int i = 0; i < marks.size(); i++) {
                System.out.println(marks.get(i));
            }
        }

和班级

import java.text.*;

public class StudentMarks {

    //contains a student class and an array of doubles. 
    private Student student = new Student();
    private double marks[] = new double[5];
    DecimalFormat fmt = new DecimalFormat("0.##");

    public StudentMarks(String name, String fan,
            double partA, double partB, double partC, double partD) {
        Student stud = new Student(name, fan);
        this.student = stud;
        this.marks[0] = partA;
        this.marks[1] = partB;
        this.marks[2] = partC;
        this.marks[3] = partD;
        this.marks[4] = ((partA*0.1) + (partB*0.4) + (partC*0.2) + (partD*0.3));
    }

    @Override
    public String toString() {
        return "" + student + "\t" + marks[0] + "\t\t" + marks[1] + "\t\t" + marks[2] + "\t\t" + marks[3] + "\t\t" + fmt.format(marks[4])+"%";
    }
}

所以我需要在arraylist的一行中获取一个特定的元素

我有 10 行文本,每行包含 2 个字符串和 2 个像这样的双精度 亚当·亚当森 adam0001 85.4 79.8 82.4 86.1 还有 9 行相同格式的不同名称和数字

我有打印第一行的marks.get(0),但我只需要第三个元素,85.4

感谢大家的尝试,但我想通了,很抱歉没有很清楚地问问题

【问题讨论】:

  • 你能发布这个 ArrayList 的定义吗?看起来它可能是一个包含另一个列表的列表。
  • 你需要告诉我们标记的数据类型是什么,并描述它包含的对象。
  • 你要给我们看代码吗?否则你真的是在浪费时间。我们目前无法为您提供太多帮助。
  • @Rohit Jain 是的,没有代码,我们需要假设很多
  • 我在写问题时如何让返回/输入真正起作用,我在亚当亚当森之前有一个返回/输入,但没有换行

标签: java


【解决方案1】:

首先,您必须在StudentMarks 中添加以下getter 才能访问marks

public double[] getMarks() {
    return this.marks;
}

然后,您可以使用以下代码 sn-p 获取值85.4,即partA

StudentMarks info = marks.get(0);
double[] marksValue = info.getMarks();
double partA = marksValue[0];

partA 是必需变量,值为 85.4,您可以根据需要使用它。

【讨论】:

  • 抱歉 Adam Adamson 的信息是一行 10,如果我把 2 放在那里,它会打印出第 3 行,这是一个不同的人信息
  • 我把它放了,第一行有一个红色下划线的错误,说字符串需要 StudentMarks found,StudentMarks 是我的数组的名称
  • 从数组中获取StudentMarks对象并从中获取需要的值。
  • @user2828122 发布StudentMarks的定义
【解决方案2】:

尝试转换

Person person =(person)marks.get(0);
System.out.println(person.StudentMarks[0]);

然后获取你需要的属性

【讨论】:

  • 是的,可能问题还不清楚。我想问题很快就会更新
【解决方案3】:

StudentMarks 类中定义一个 getter 方法:

public double[] getMarks() {
    return marks;
}

如果您的marks[0] 是您需要的值,请使用System.out.println(marks.get(i).getMarks()[0]);

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 1970-01-01
    • 2012-01-28
    • 2022-06-12
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多