webForumDet fria alternativet

String och Comparable[]

8 svar · 565 visningar · startad av Sam82

Sam82Medlem sedan feb. 200512 inlägg
#1

Hej!
Jag har en main metod som läser in från en fil, en annan metod som tar Comparable[] objekt.
frågan är hur gör jag så att jag kan skicka iväg det som läses till metoden som tar Comparable[] objekt.

tacksam för svar
mvh

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

Hur ser koden ut nu?

Sam82Medlem sedan feb. 200512 inlägg
#3

jag har försökt att skapa en Comparable[] array och lägga in det som läses in i arrayen, men det har inte funkat.
men annars så ser den ut så här :
import java.io.*;

public class ex {

//--------------------InsertionSort------------------
public static void insertionSort(Comparable\[\] list) {
	
	
	for (int i = 1; i \< list.length; i++) {
    	
        Comparable tmp = list*;
        int j;
        for (j = i; j \> 0 && tmp.compareTo(list\[j - 1\]) \< 1; j--) 
        	list\[j\] = list\[j - 1\];
        
        list\[j\] = tmp;
    }
    
}



//--------------Main---------------------
public static void main(String\[\] args) {
	
	if(args.length \> 0) {
		
		if(args\[0\].equals("insertion")) {
			
			try {
				
				BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
				
				String str;
				while ((str = in.readLine()) != null) {
    				System.out.println(str);
					
				}
	    			
				in.close();
				
				} catch(IOException e) {
					
					e.printStackTrace();
			}
		}
	}
}

}*

nitro2k01Medlem sedan aug. 20037 630 inlägg
#4

tips: Lägg koden i [kod]-taggar.
/r Alltså här på forumet för att den ska bli mer lättläst.

Sam82Medlem sedan feb. 200512 inlägg
#5
import java.io.*;

public class ex {
	
	
	//--------------------InsertionSort------------------
	public static void insertionSort(Comparable[] list) {
    	
    	
    	for (int i = 1; i < list.length; i++) {
        	
            Comparable tmp = list[i];
            int j;
            for (j = i; j > 0 && tmp.compareTo(list[j - 1]) < 1; j--) 
            	list[j] = list[j - 1];
            
            list[j] = tmp;
        }
        
    }
    
    
	
	//--------------Main---------------------
	public static void main(String[] args) {
		
		if(args.length > 0) {
			
			if(args[0].equals("insertion")) {
				
				try {
					
					BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
					
					String str;
					while ((str = in.readLine()) != null) {
        				System.out.println(str);
						
					}
		    			
					in.close();
					
					} catch(IOException e) {
						
						e.printStackTrace();
				}
			}
		}
	}
}
Sam82Medlem sedan feb. 200512 inlägg
#6

Uppenbarligen så ska jag ju göra nåt efter while-loopen så att str kan skickas till insertion metoden...men frågan är just vad ? tacksam för svar :)

nitro2k01Medlem sedan aug. 20037 630 inlägg
#7

Nu är itne jag säker på att detta är det bästa sättet, ett bra sätt, eller att det ens funkar som det ska, men pröva denna kod och bygg vidare på den:

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

public class ex {

//--------------------InsertionSort------------------
public static void insertionSort(Comparable[] list) {

	for (int i = 1; i < list.length; i++) {

		Comparable tmp = list[i];
		int j;
		for (j = i; j > 0 && tmp.compareTo(list[j - 1]) < 1; j--)
		list[j] = list[j - 1];

		list[j] = tmp;
	}

}

//--------------Main---------------------
public static void main(String[] args) {
	ArrayList alist = new ArrayList();
	Object[] clist_temp;
	Comparable[] clist;

	if(args.length > 0) {

		if(args[0].equals("insertion")) {

			try {

				BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

				String str;
				while ((str = in.readLine()) != null) {
					alist.add(str);
					System.out.println(str);
				}

				in.close();

				clist_temp = alist.toArray();

				System.out.println(clist_temp.length);

				clist=new Comparable[clist_temp.length];

				System.arraycopy(clist_temp, 0, clist, 0, clist.length);

				System.out.println("---");

				for (int i = 1; i < clist.length; i++) {
					System.out.println(clist[i]);
				}

				insertionSort(clist);

				System.out.println("---");

				for (int i = 1; i < clist.length; i++) {
					System.out.println(clist[i]);
				}

			} catch(IOException e) {

				e.printStackTrace();
			}
		}
	}
}

}
TomasJMedlem sedan feb. 200563 inlägg
#8

Sam82 skrev:

Uppenbarligen så ska jag ju göra nåt efter while-loopen så att str kan skickas till insertion metoden...men frågan är just vad ? tacksam för svar :)

		...
		Vector vector = new Vector();
		String str;
		while ((str = in.readLine()) != null) {
			vector.add(str);
		}		
		String[] stringArray = new String[vector.size()];
		vector.copyInto(stringArray);
		
		insertionSort(stringArray);
		// eller istället för att använda en egen sorteringsalgoritm 
		// så kan man använda följande metod 
		// java.util.Arrays.sort(stringArray);
		...

/ Tomas

Sam82Medlem sedan feb. 200512 inlägg
#9

Jag är tacksam för svaret och uppskattar din tid för besväret :)

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb