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
8 svar · 565 visningar · startad av Sam82
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
Hur ser koden ut nu?
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();
}
}
}
}
}*
tips: Lägg koden i [kod]-taggar.
/r Alltså här på forumet för att den ska bli mer lättläst.
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();
}
}
}
}
}
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 :)
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();
}
}
}
}
}
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
Jag är tacksam för svaret och uppskattar din tid för besväret :)