[英]How to get specific element from array/ArrayList?
我试图从我的ArrayList
/ array的每一行的末尾获取最后一个元素。
例如,我在列表中有以下记录:(不要介意语言,希腊名称)
Nikos Pappas : 321/2012999, C,8.53
Marios Athanasiou : 321/2012001, A,6.89
Stavroula Markou : 321/2011001, D,7.00
Giannis Kallogirou : 321/2009005, ST, 6.89
Nikoletta Stefanou : 321/2010001, D, 7.25
Stathis Petrou : 321/2011002, E, 8.10
Kostas Tzovalis : 321/2007667, C, 5.00
Michalis Kotsis : 321/2009723, D, 7.12
Maria Katsanou : 321/2012002, C, 5.50
我想取:8.53、6.89,....,5.50(学生的分数)
这就是我到目前为止所做的(该文件是包含上述信息的文件)
public static void main(String[] args) {
BufferedReader br = null;
ArrayList <String> list = new ArrayList <> ();
try
{
br = new BufferedReader(new FileReader("C:/Users/Stefi/Desktop/java_ask3.txt"));
String str;
//System.out.print("mpika");
while((str = br.readLine()) != null)
{
list.add(str);
System.out.println(str);
}
}
catch(IOException e)
{
System.out.println("Κάτι πήγε στραβά! Προσπάθησε πάλι.");
}
finally
{
try
{
if (br != null)
{
br.close();
}
}
catch(IOException e2)
{
System.out.println("Δεν μπορεσα να κλείσω το αρχείο.");
}
}
int x = list.size();
String [] array = new String[x];
array = list.toArray(array);
for(int i=0; i<array.length; i++)
{
System.out.println(array[i]);
}
String [] f = new String[list.size()];
String vathmos;
for(int i=0; i<array.length; i++)
{
vathmos = list.get(i).replaceAll("\\D+", "");
f[i] = vathmos;
}
System.out.println("\n\n\n Float Print\n");
for(int i=0; i<array.length; i++)
{
System.out.println(f[i]);
}
}
这是我的输出示例:
3212012999853
3212012001689
3212011001700
3212009005689
它采用找到的所有数字。 但是我不知道如何只取最后一个浮点数。 我知道像这样工作是完全错误的,因为我永远也不会得到想要的浮动。
我还尝试将列表转换为数组并采用最后一个元素,但没有解决。
你可以试试这个
String s = line.replaceAll(".*(\\d+\\.\\d+)$", "$1");
用逗号分隔行,然后得到结果数组的最后一个元素
String[] splitArr = line.split(",");
String lastNumber = splitArr[splitArr.length - 1];
但是最好的解决方案是按照评论中的建议安排一个学生班
如果将记录存储为字符串,则可以使用substring方法:
grade = Double.parseDouble(array[i].substring(array[i].length() - 3));
如果您确定成绩始终以x.xx的形式出现在每个字符串的末尾。
还可以考虑创建一个班级,其中包含有关各个字段中学生的所有信息,例如:
public class Student{
public String name;
public String surname;
public int age;
public double grade;
}
当然,这只是一个示例,您可以隐藏实现并提供所需的方法。 然后,您可以创建任何类型的Student对象的集合,因此为任何学生获取任何字段的指定值将很容易。
我可以建议将几个String函数添加到您的代码中。 虽然这不是经过测试的代码-
使用String.split();
//This will hold all the numbers as String
List<String> masterList = new ArrayList<String>();
while((str = br.readLine()) != null)
{
String [] lineValues = String.split(",");
int countElements = lineValues.Length();
masterList.Add(lineValues[countElements - 1]);
}
使用lastIndexOf();
//This will hold all the numbers as String
List<String> masterList = new ArrayList<String>();
while((str = br.readLine()) != null)
{
int lastIndex = str.lastIndexOf(",");
masterList.Add(str.substring(lastIndex, str.length() - 1));
}
填充masterList后,可以遍历该列表并使用提取浮点数
Float.valueOf(masterList.get(i));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.