Java 有没有办法扫描ArrayList中的索引。nextint.nextln等等?

Java 有没有办法扫描ArrayList中的索引。nextint.nextln等等?,java,arraylist,split,Java,Arraylist,Split,我有一个名为data的ArrayList 数据中的每个索引都包含一行字和数字。 例如: data(0) contains: Bob Sinclair, BS776, 87.5, 23.4, 20.1, 50.2 data(1) contains: Paul Paulson, PP009, 98.3, 12.6, 34.0, 22.5 …再加上8个 是否有一种方法可以将每个对象分成6个对象(姓名、学号、分数1、分数2、分数3、分数4) 之后我需要把分数加在一起求一个总数,但我不是在寻求这部分的

我有一个名为data的ArrayList

数据中的每个索引都包含一行字和数字。 例如:

data(0) contains: Bob Sinclair, BS776, 87.5, 23.4, 20.1, 50.2

data(1) contains: Paul Paulson, PP009, 98.3, 12.6, 34.0, 22.5
…再加上8个

是否有一种方法可以将每个对象分成6个对象(姓名、学号、分数1、分数2、分数3、分数4)


之后我需要把分数加在一起求一个总数,但我不是在寻求这部分的帮助,只是提到它,因为数字不能是字符串,因为它们需要加上(或者它们可以是字符串,/耸肩,我是noob)。

它们可以是字符串,然后可以使用字符串拆分方法将它们分成6个字符串,并使用Float.parseFloat(“此处为字符串格式的数字”)


链接到类API:

这就是您在
面向对象编程中所做的

i、 e.创建一个类
Student
,该类具有属性
Name、Student Number、Score1、Score2、Score3、Score4

class Student {
  String name;
  int num;
  int score1;
  int score2;
  int score3;
  int score4;
  // getters setters here
}
并从
ArrayList
的每个元素中填充该
Student
类的实例

List<Student> slist = new ArrayList<Student>();
for (String str : list) {
    String[] arr = str.split(",");
    // some validation here for generated arr
    student student = new Student();
    student.setName(arr[0]);
    student.setName(Integer.parseInt(arr[1]));
    // populate rest of fields
    slist.add(student);
}
System.out.println(slist);
List slist=new ArrayList();
for(字符串str:list){
字符串[]arr=str.split(“,”);
//这里对生成的arr进行一些验证
学生=新生();
student.setName(arr[0]);
student.setName(Integer.parseInt(arr[1]);
//填充其余字段
添加(学生);
}
系统输出打印LN(slist);
像这样

for (String str : data) {

      //use split with , on each string here

            }

您可以创建一个类,它获取一个数据对象,我想它是一个字符串,作为构造函数的参数

如果它是一个字符串,可以通过
string.split(“,”)将其分隔

使用您的类,您可以轻松创建方法以获得所有想要的总和值。

List List=new ArrayList();
List<String> list = new ArrayList<String>();
list.add("Bob Sinclair, BS776, 87.5, 23.4, 20.1, 50.2");
list.add("Paul Paulson, PP009, 98.3, 12.6, 34.0, 22.5");
for (String str : list) {
String[] parts = str.split(", ");
// create structure which you need and put data there
// parts[0] - student, etc.
}
添加(“Bob Sinclair,BS776,87.5,23.4,20.1,50.2”); 添加(“Paul Paulson,PP009,98.3,12.6,34.0,22.5”); for(字符串str:list){ String[]parts=str.split(“,”); //创建所需的结构并将数据放在其中 //第[0]部分-学生等。 }
您需要将数据包装到一个类中,然后将该类的实例存储在
数组列表中

List<Student> slist = new ArrayList<Student>();
for (String str : list) {
    String[] arr = str.split(",");
    // some validation here for generated arr
    student student = new Student();
    student.setName(arr[0]);
    student.setName(Integer.parseInt(arr[1]));
    // populate rest of fields
    slist.add(student);
}
System.out.println(slist);
假设您有一个class
播放器

public class Player {

    private String name;
    private List<Float> scores;

    public Player(String name){

    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<Float> getScores() {
        return scores;
    }
    public void setScores(List<Float> scores) {
        this.scores = scores;
    }
}
公共类播放器{
私有字符串名称;
私人名单分数;
公共播放器(字符串名称){
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共列表getScores(){
返回分数;
}
公开考试分数(列出分数){
这个分数=分数;
}
}
然后,您将创建ArrayList作为
List players=new ArrayList

List<Student> slist = new ArrayList<Student>();
for (String str : list) {
    String[] arr = str.split(",");
    // some validation here for generated arr
    student student = new Student();
    student.setName(arr[0]);
    student.setName(Integer.parseInt(arr[1]));
    // populate rest of fields
    slist.add(student);
}
System.out.println(slist);
使用Player对象的getter和setter,您可以检索每个单独的属性,并根据自己的喜好处理它们

因此,要获得该实例的名称,您可以执行以下操作:
players.get(0).getName()
或存储在player类中的任何变量的相同方法。

是的,有多种方法可以剥猫皮:

第一个:String.split() 第二种可能性:
Scanner s=新的扫描仪(inputString);
s、 使用分隔符(“,”);
字符串名称=s.next();
双[]分=新双[4]//创建双精度阵列
字符串someCode=s.next();

对于(int i=0;i使用
String
类中的
split
方法,假设
data
具有
List
类型,并且每一行都具有您描述的结构:

for(String s: data) {
    String[] line = s.split(",");
    // use each element in line
    String studentName = line[0];
    String studentNumber = line[1];
    double score1 = Double.parseDouble(line[2]);
    double score2 = Double.parseDouble(line[3]);
    double score3 = Double.parseDouble(line[4]);
    double score4 = Double.parseDouble(line[5]);
}
//this pattern is very ugly (unsacalable, unmaintainable), but should work for now as poc...
Pattern p = Pattern.compile("([^,]*),\\s*([^,]*),\\s*([^,]*),\\s*([^,]*),\\s*([^,]*),\\s*([^,]*)");
Matcher m = p.matcher(inputString);
if(matcher.matches()) {
   String name = group(1);
   String someCode = group(2);
   double[] scores = new double[4];         //create array for doubles 
   for(int i=0; i<4; i++) {                 //fill array of doubles 
      scores[i]=Double.parseDouble(s.group(i+3)); //null check might be needed!
   }
}
for(String s: data) {
    String[] line = s.split(",");
    // use each element in line
    String studentName = line[0];
    String studentNumber = line[1];
    double score1 = Double.parseDouble(line[2]);
    double score2 = Double.parseDouble(line[3]);
    double score3 = Double.parseDouble(line[4]);
    double score4 = Double.parseDouble(line[5]);
}