Java 有没有办法扫描ArrayList中的索引。nextint.nextln等等?
我有一个名为data的ArrayList 数据中的每个索引都包含一行字和数字。 例如: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(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]);
}