Del 20. öppna informationen
För att detta ska funka behöver du en txt fil i din build map.
import java.io.*;
public class Main {
public static void main(String[] args)
{
System.out.println("Filens namn?");
String fil = Keyboard.readString();
try
{
FileReader fr = new FileReader(fil);
BufferedReader inFil = new BufferedReader(fr);
String rad = inFil.readLine();
while (rad != null)
{
System.out.println(rad);
rad = inFil.readLine();
}
inFil.close();
}
catch(FileNotFoundException el)
{
System.out.println("Filen hittades inte");
}
catch(IOException e2)
{
System.out.println(e2);
}
}
}
import java.io.*;
public class Main {
public static void main(String[] args)
{
System.out.println("Filens namn?");
String fil = Keyboard.readString();
try
{
FileReader fr = new FileReader(fil);
BufferedReader inFil = new BufferedReader(fr);
String rad = inFil.readLine();
while (rad != null)
{
System.out.println(rad);
rad = inFil.readLine();
}
inFil.close();
}
catch(FileNotFoundException el)
{
System.out.println("Filen hittades inte");
}
catch(IOException e2)
{
System.out.println(e2);
}
}
}
Först ska vi skriva in filens namn. Du måste skiva exakt vad den heter. även att det är .txt. kund.txt t.ex.
FileReader fr = new FileReader(fil);
BufferedReader inFil = new BufferedReader(fr);
String rad = inFil.readLine();
while (rad != null)
{
System.out.println(rad);
rad = inFil.readLine();
}
inFil.close();
Här läser vi in informationen. den kommer fortsätta läsa en rader så länge de har ett värde. så när det kommer en tom rad så kommer den sluta läsa in data.
catch(FileNotFoundException el)
{
System.out.println("Filen hittades inte");
}
catch(IOException e2)
{
System.out.println(e2);
}
Har har vi 2 alternativ på vad som ska hända.
Om den inte hittar något ska den skriva ut "Filen hittades inte".
Om den hittar filen så skriver den ut allt.
Del 19. Att spara information
Nu ska vi spara information! Vi kommer spara några namn med nummer i text fil. Det är inte så mycket mer än så!
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException
{
String fil = "kund.txt";
FileWriter fw = new FileWriter(fil);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter utFil = new PrintWriter(bw);
for (int i = 0; i < 3; i++)
{
System.out.println("Nummer: ");
int nummer = Keyboard.readInt();
System.out.print("Namn: ");
String namn = Keyboard.readString();
utFil.println(nummer + "\t" + namn);
}
utFil.close();
}
}
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException
{
String fil = "kund.txt";
FileWriter fw = new FileWriter(fil);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter utFil = new PrintWriter(bw);
for (int i = 0; i < 3; i++)
{
System.out.println("Nummer: ");
int nummer = Keyboard.readInt();
System.out.print("Namn: ");
String namn = Keyboard.readString();
utFil.println(nummer + "\t" + namn);
}
utFil.close();
}
}
Bara en klass behövs här.
String fil = "kund.txt"; här bestämer vi namnet för filen
FileWriter fw = new FileWriter(fil);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter utFil = new PrintWriter(bw);
Detta behövs för att vi ska kunna skapa och spara filen.
System.out.println("Nummer: ");
int nummer = Keyboard.readInt();
System.out.print("Namn: ");
String namn = Keyboard.readString();
utFil.println(nummer + "\t" + namn);
I for loopen så skriver vi in 3 nummer och 3 namn.
utFil.println(nummer + "\t" + namn); här sparar informationen i filen
och sen sist i utFil.close(); så stänger vi filen. all information är sparad, och filen bör finnas i build
Del 18. Utväljande sortering
Så varför en till sortering? För att fortsätta jobba med klasser! men den här fungerar anorlunda än den föra.
Bubbelsortering jemför bara ett tal med nästa tal i serien. säg att vi har en väldigt lång serie med tal och bara första och sista behöver byta plats. Sorteringen blir jätte lång, sen ska dras igenom lika många gånger som antalet tal.
Utväljande jemför ett tal med alla tal, sen byter plats. Plus att när den har gåt igenom första talet, so jemför den andra talet med alla efter den. så det krävs en mycket mindre mängd sorteringar. Detta kanske inte gör så stor skillnad för oss, men för att hantera en större databas, kan en bubbelsorting vara krävande.
Första klassen
public class Main {
public static void main(String[] args)
{
double[] vikt = new double[20];
System.out.println("Mata in, avsluta med 0:");
int temp = Keyboard.readInt();
int antal = 0;
while (temp != 0)
{
vikt[antal] = temp;
antal++;
System.out.print("Mata in ett nytt tal");
temp = Keyboard.readInt();
}
Sort.utvSort(vikt, antal);
for(int i = 0; i < antal; i++)
{
System.out.println(vikt[i]);
}
}
}
För att skriva in talen använder vi en while loop. != betyder skillt ifrån. Så länge temp inte är 0, kommer vi fortsätta skriva in nya tal. Sen i Sort.utvSort(vikt, antal); skriver vi in att vi ska skicka med 2 variabler.
Andra klassen
public class Sort
{
public static void utvSort(double data[], int antal)
{
for (int m = 0; m < antal; m++)
{
int position = m;
for(int n = m+1; n < antal; n++)
{
if(data[n] < data[position])
{
position = n;
}
}
if (m != position)
{
double temp = data[m];
data[m] = data[position];
data[position] = temp;
}
}
}
}
public static void utvSort(double data[], int antal). här tar vi emot våra värden vi skicka från mai.
Den ända som skiljer den här sorteringen med den gamla, är att gjort så den jemför som jag beskrev åvan för.
Det viktiga är att försöka förtså koden
ublic class Main {
public static void main(String[] args)
{
double[] vikt = new double[20];
System.out.println("Mata in, avsluta med 0:");
int temp = Keyboard.readInt();
int antal = 0;
while (temp != 0)
{
vikt[antal] = temp;
antal++;
System.out.print("Mata in ett nytt tal");
temp = Keyboard.readInt();
}
Sort.utvSort(vikt, antal);
for(int i = 0; i < antal; i++)
{
System.out.println(vikt[i]);
}
}
}
Del 17. Mer sorteringar!
Detta exempel är nästan exakt likadan som det föra, den ända skillnaden är att vi ska nu sortera efter bokstäver, och inte nummer.
Detta är ett också en såkallad bubbelsorting som den föra.
Den första klassen
public class Main {
public static void main(String[] args)
{
String[] tellista = {"Bo 14145", "Ulf 55753", "Derp 87532", "kek 67082", "pelle 57126"};
Sort.bubbelSort(tellista);
System.out.println("Sorterade namn");
for(int i = 0; i < 4; i++)
{
System.out.println(tellista[i]);
}
}
public class Main {
public static void main(String[] args)
{
String[] tellista = {"Bo 14145", "Ulf 55753", "Derp 87532", "kek 67082", "pelle 57126"};
Sort.bubbelSort(tellista);
System.out.println("Sorterade namn");
for(int i = 0; i < 4; i++)
{
System.out.println(tellista[i]);
}
}
Andra klassen
public class Sort
{
public static void bubbelSort(String data[])
{
for(int m = data.length-1; m > 0; m--)
{
for(int n = 0; n < m; n++)
{
if(data[n].compareTo(data[n+1])> 0)
{
String temp = data[n];
data[n] = data[n+1];
data[n+1] = temp;
}
}
}
}
Dett ända som är anorlunda mott den föra är att det står
if(data[n].compareTo(data[n+1])> 0)
Istället för
if(data[n] > data[n+1])
Compare to är om ska använda strängar istället för int/double
Nästa gång ska jag gå igenom en ny form av sorteringar.
Del 16. Klasser och sorteringar
VI ska fortsätta med klasser, Men också med något nytt! Det vi ska göra nu är sortera nummer, genom att använda en klass. alla nummer är redan bestämda i en ordning. vi ska använda klassen för att ändra ordning på dem.
Vi kommer använda 2 klasser som föra gången. I den första kommer vi skapa våra nummer, och sen skriva ut dem. I vår andra klass kommer vi sortera våra nummer. Det är inte mycker svårare än så!
Första klassen
public class Main {
public static void main(String[] args)
{
double[] vikt = {67, 45, 678, 1, 777};
Sort.bubbelSort(vikt);
System.out.println("5 sorterade tal");
for(int k=0; k < 5; k++)
{
System.out.println(vikt[k]);
}
}
}
public class Main {
public static void main(String[] args)
{
double[] vikt = {67, 45, 678, 1, 777};
Sort.bubbelSort(vikt);
System.out.println("5 sorterade tal");
for(int k=0; k < 5; k++)
{
System.out.println(vikt[k]);
}
}
}
Det är inget nytt här. vi skickar alla värden i vikt till klassen med Sort.bubbelSort(vikt);
Sedan skriver vi ut alla värden vikt
Den andra Klassen
public class Sort
{
public static void bubbelSort(double data[])
{
for(int m = data.length -1; m > 0; m--)
{
for(int n = 0; n < m; n++)
{
if(data[n] > data[n+1])
{
double temp = data[n];
data[n] = data[n+1];
data[n+1]=temp;
}
}
}
}
}
I grund och botten så jemför den ett tal med ett annat. Om det tal n är större än n+1, så byter de plats.
Den första for loopen sätter vi hur många gånger den ska köras igenom.
I den nästa har vi ett värde som ska börja på 0, och öka allt eftersom.
Sedan jemför vi data[n] och data[n+1]. Om data[n] är större än data[n+1], så byter de plats.
temp är bara en variabel som vi använder för att få dem att byta plats. Det är nog inte så svårt att att förstå själva bytet.
Sen fortsätter den köra igenom allt, så den jämfört alla tal.
sedan skriver den ut talen i sorterad ordning.