2013-11-10 6 views
-1

У меня есть txt-файл, который я помещаю в массив. Данные в файле txt содержат данные в формате:Maximum Arraylist

Order #  Date  Name  City  State Zip Code Transaction Amount 

по строке с каждым элементом, представляющим столбец.

Тогда есть еще 1000 строк, на которых они заполнены ответами. Мне нужна помощь в поиске трех верхних сумм из суммы транзакций. Я застрял на том, как это сделать.

Вот мой код:

import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Random; 
import java.util.Scanner; 

public class Rewards { 

public static void main(String[] args) throws FileNotFoundException { 

    FileReader fin = new FileReader(
      "C:/Users/Jordan/Desktop/Project5Text.txt"); 
    Scanner src = new Scanner(fin); 
    ArrayList<String> lines = new ArrayList<String>(); 

    Random rand = new Random(); 

    while (src.hasNext()) { 
     String l = src.nextLine(); 
     System.out.println(l); 
     if (!l.equals("")) 
      lines.add(l); 

    } 

    System.out.println(); 

    String[] randomChoices = new String[1]; 

    for (int i = 0; i < randomChoices.length; i++) { 
     String randomString = lines.get(1 + rand.nextInt(lines.size() - 1)); 
     randomChoices[i] = randomString; 
    } 

    for (String s : randomChoices) 
     System.out.println("Random Winner for $20 gift card is:  " + s); 

    String[] randomChoices1 = new String[1]; 

    for (int i = 0; i < randomChoices1.length; i++) { 
     String randomString = lines.get(1 + rand.nextInt(lines.size() - 1)); 
     randomChoices1[i] = randomString; 
    } 

    for (String s : randomChoices1) 
     System.out.println("Random Winner for $40 gift card is:  " + s); 

    String[] randomChoices2 = new String[1]; 

    for (int i = 0; i < randomChoices2.length; i++) { 
     String randomString = lines.get(1 + rand.nextInt(lines.size() - 1)); 
     randomChoices2[i] = randomString; 
    } 

    for (String s : randomChoices2) 
     System.out.println("Random Winner for $60 gift card is:  " + s); 

    String[] randomChoices3 = new String[1]; 

    for (int i = 0; i < randomChoices3.length; i++) { 
     String randomString = lines.get(1 + rand.nextInt(lines.size() - 1)); 
     randomChoices3[i] = randomString; 
    } 

    for (String s : randomChoices3) 
     System.out.println("Random Winner for $80 gift card is:  " + s); 

    String[] randomChoices4 = new String[1]; 

    for (int i = 0; i < randomChoices4.length; i++) { 
     String randomString = lines.get(1 + rand.nextInt(lines.size() - 1)); 
     randomChoices4[i] = randomString; 
    } 

    for (String s : randomChoices4) 
     System.out.println("Random Winner for $100 gift card is:  " + s); 



    src.close(); 
} 
} 

Вот некоторые из текстового файла, который я использую.

Order # Date First name Middle Initial Last name Address City State Zip Email Transaction Amount 

1 8/26/2012 Kristina H Chung 947 Martin Ave. Muncie CA 46489 [email protected] $593 

2 11/16/2012 Paige H Chen 15 MainWay Rd. Dallas HI 47281 [email protected] $516 

3 11/10/2012 Sherri E Melton 808 Washington Way Brazil CA 47880 [email protected] $80 

4 9/20/2012 Gretchen I Hill 56 Washington Dr. Atlanta FL 47215 [email protected] $989 

5 3/11/2012 Karen U Puckett 652 Maplewood Ct. Brazil FL 46627 [email protected] $826 

6 7/4/2012 Patrick O Song 679 MainWay Rd. Lafayette GA 47161 [email protected] $652 
+0

Я не вижу вопроса нигде? – jpw

+0

Я не могу понять, как найти лучшие 3 суммы из счетов транзакций –

ответ

1

Создание пользовательского Order объекта вместо, который реализует Comparable<Integer>. Подсказка: вы хотите сравнить каждый Order с его ценой.

Заполните этот Order объект со всей информацией, находящейся в вашем файле. Затем вы можете использовать Collections.sort() (а затем Collections.reverse()), чтобы гарантировать, что первые три записи являются вашими наивысшими тремя значениями.