2016-03-15 1 views
0

Я должен читать точки из файла и принимать эти точки в виде массива, чтобы я мог реализовать Grahams Scan, однако моя программа только кажется Чтобы принять первую строку баллов, кто-нибудь может помочь?Нужна помощь, принимая точки из файла и добавляя их в массив Java (Grahams Scan)

import java.io.*; 
import java.util.*; 

public class Graham { 

private static int[] get_arr(String input) throws Exception 
{ 
    String squirtle; 
    String[] wartortle; 
    int[] arr; 

    //Gets the file 
    BufferedReader in = new BufferedReader(new FileReader(input)); 
    squirtle = in.readLine(); 

    //delimits numbers with a comma for eventual output 
    wartortle = squirtle.split(","); 

    arr = new int[wartortle.length]; 

    //parses values into array 
    for (int i = 0; i < wartortle.length; i++) 
    { 
     arr[i] = Integer.parseInt(wartortle[i]); 
    } 
    return arr; 

} 

public static void main(String[] args) throws Exception 
{ 
    //initializes answer which is used to see if the user wants to repeat the prgm 
    String answer; 
    do 
    { 
     String input; 
     int[] arr; 
     Scanner scanner = new Scanner(System.in); 

     System.out.println("Please enter a source filename such as C:\\Users\\user_\\Documents\\file.txt, or if it's in the same folder as this class just file.txt"); 
     input = scanner.next(); 

     System.out.println("The points"); 

     //Used for outputting file contents 
     BufferedReader br = new BufferedReader(new FileReader(input)); 
     String line; 
     while ((line = br.readLine()) != null) 
     { 
      System.out.println(line); 
     } 
     //Gather array 
     arr = get_arr(input); 

     //Prints array 
     System.out.println(Arrays.toString(arr)); 

     System.out.println("Thank you for using this program, if you would like to run it again press y if not press anything else"); 
     answer = scanner.next(); 
    } 
    //whenever the user inputs y the program runs again 
    while (answer.equals("y")) ; 
} 

}

my text file called garr.txt looks like 
1,2 
2,3 
3,4 
4,5 
5,6 

Но только принимает 1,2

ответ

0

Проблема в коде вы читаете только одну строку из вашего входного файла. Вы должны прочитать все строки из файла. Вы можете изменить get_arr метод следующим образом:

private static Integer[] get_arr(String input) throws Exception 
{ 
    String squirtle; 
    List<Integer> intList = new ArrayList<Integer>(); 

    //Gets the file 
    BufferedReader in = new BufferedReader(new FileReader(input)); 

    while((squirtle = in.readLine()) != null) { //Reads all lines 
     //delimits numbers with a comma for eventual output 
     String[] wartortle = squirtle.split(","); 

     for (int i = 0; i < wartortle.length; i++) 
     { 
      intList.add(Integer.parseInt(wartortle[i])); 
     } 
    } 

    return intList.toArray(new Integer[0]); //converts Integer list to int[] 
} 
+0

Вау спасибо большое, как я могу изменить свой драйвер, чтобы затем показать точки? – IcySun

+0

Ваш основной метод останется таким же, как и в обновленном методе get_arr. Это сработает. –

+0

Ничего страшного, не могли бы вы дать мне какие-либо советы о том, как сделать точку x и y для каждых двух чисел? – IcySun

 Смежные вопросы

  • Нет связанных вопросов^_^