簡體   English   中英

如何從array / ArrayList獲取特定元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM