Skip to content
Snippets Groups Projects
Commit dacac7d8 authored by jokayli's avatar jokayli
Browse files

demo9

parent 5a7fc976
No related branches found
No related tags found
No related merge requests found
package d10;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
/**
* Luetaan tiedosto ja tulostetaan tiedoston rivit, niin että alussa rivinumerot ja maksimipituus 40merkkiä
*/
public class TehtavaT1 {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Anna tiedoston nimi argumenttina");
return;
}
String tiedosto = args[0];
try (Scanner f = new Scanner(new FileReader(tiedosto))) {
int rivinumero = 1;
while (f.hasNextLine()) {
String rivi = f.nextLine();
System.out.printf("/* %02d */ %s\n", rivinumero, rivi.substring(0, Math.min(rivi.length() - 1, 40)));
rivinumero++;
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("Virhe tiedostoa lukiessa");
}
}
}
package d10;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
/**
* Luetaan tiedosto ja tulostetaan tiedoston rivit, jotka alkavat kahdella tähdellä **
*/
public class TehtavaT2 {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Anna tiedoston nimi argumenttina");
return;
}
String tiedosto = args[0];
try (Scanner f = new Scanner(new FileReader(tiedosto))) {
while (f.hasNextLine()) {
String rivi = f.nextLine();
String[] palat = rivi.trim().split(" ");
if (palat.length > 0 && palat[0].equals("**")) {
System.out.println(rivi);
}
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("Virhe tiedostoa lukiessa");
}
}
}
package d9;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class ArrayListMalliGen { // TehtavaT5b
/**
* @param os virta johon tulostetaan
* @param luvut tulostettavat luvut
*/
public static void tulosta(OutputStream os, Collection<Int> luvut) {
@SuppressWarnings("resource")
PrintStream out = new PrintStream(os);
for (Int luku : luvut) {
out.print(luku + " ");
}
out.println();
}
/**
* @param os virta johon tulostetaan
* @param luvut tulostettavat luvut
*/
public static void tulostaIter(OutputStream os, Collection<Int> luvut) {
@SuppressWarnings("resource")
PrintStream out = new PrintStream(os);
for (Iterator<Int> it = luvut.iterator(); it.hasNext(); ) {
Int luku = it.next();
out.print(luku + " ");
}
out.println();
}
/**
* Esimekki listasta
* @param args ei käytössä
*/
public static void main(String[] args) {
ArrayList<Int> luvut = new ArrayList<Int>(7);
try {
luvut.add(new Int(0));
luvut.add(new Int(2));
luvut.add(new Int(99));
} catch (Exception e) {
System.out.println("Virhe: " + e.getMessage());
}
System.out.println(luvut);
luvut.get(1).set(4);
System.out.println(luvut);
Int luku = luvut.get(2);
System.out.println("Paikassa 2 on " + luku);
tulosta(System.out, luvut);
try {
luvut.get(21).set(4);
} catch (IndexOutOfBoundsException e) {
System.out.println("Virhe: " + e.getMessage());
}
}
}
package d9;
/**
* @author Joonas Yli-Saari
*
* @example <pre name="test">
* Ehdokas e = new Ehdokas(100, 5);
* e.toString() === "Rahaa 100.00, ääniä 5"
* </pre>
*/
public class Ehdokas {
private double rahat;
private int aanet;
public Ehdokas(double rahat, int aanet) {
this.rahat = rahat;
this.aanet = aanet;
}
/**
* Kasvattaa ehdokkaan äänien määrää mikäli rahat riittää
* @param aanet äänien määrä
* @param hinta hinta per ääni
* @return true tai false mikäli onnistui tai ei
*
* @example <pre name="test">
* Ehdokas e = new Ehdokas(100, 5);
* e.osta(5, 5) === true
* e.osta(5, 100) === false
* </pre>
*/
public boolean osta(int aanet, double hinta) {
double kokonaishinta = aanet * hinta;
if (kokonaishinta > rahat) {
return false;
}
this.rahat -= kokonaishinta;
this.aanet += aanet;
return true;
}
public int compareTo(Ehdokas o) {
if (this.aanet > o.aanet) {
return 1;
} else if (this.aanet < o.aanet) {
return -1;
} else {
return 0;
}
}
@Override
public String toString() {
return String.format("Rahaa %.2f, ääniä %d", rahat, aanet);
}
public static void main(String[] args) {
Ehdokas ehd1 = new Ehdokas(100000.0, 0);
Ehdokas ehd2 = new Ehdokas(20000.0, 300);
System.out.println(ehd1); // Tulostaa: Rahaa 100000.00, ääniä 0
System.out.println(ehd2); // Tulostaa: Rahaa 20000.00, ääniä 300
ehd1.osta(200, 100.0); // Ostaa 200 ääntä, 100 mk/kpl
System.out.println(ehd1); // Tulostaa: Rahaa 80000.00, ääniä 200
boolean onnistui = ehd2.osta(300, 100);
if (!onnistui) System.out.println("Rahat ei riitä :-)");
System.out.println(ehd2); // Tulostaa: Rahaa 20000.00, ääniä 300
if (ehd1.compareTo(ehd2) > 0) System.out.println("Ehdokas 1 voitti!");
if (ehd1.compareTo(ehd2) < 0) System.out.println("Ehdokas 2 voitti!");
if (ehd1.compareTo(ehd2) == 0) System.out.println("Tasapeli!");
// Vertailu tehdään äänimäärien perusteella.
// Esimerkissä tulostuu : Ehdokas 2 voitti!
}
}
package d9;
/**
* Muutettava version integer luokasta
* @author Joonas Yli-Saari
*
* @example <pre name="test">
* Int i = new Int(5);
* i.toString() === "5";
* i.set(3);
* i.toString() === "3";
* </pre>
*/
public class Int {
public static void main(String[] args) {}
private int value;
public Int(int value) {
this.value = value;
}
public void set(int value) {
this.value = value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
package d9;
public class Taulukko {
/**
* Luokka tyden taulukon poikkeusta varten
*/
public static class TaulukkoTaysiException extends Exception {
private static final long serialVersionUID = 1L;
TaulukkoTaysiException(String viesti) {
super(viesti);
}
}
private int alkiot[];
private int lkm;
/**
* Alustetaan 5 kokoinen taulukko
*/
public Taulukko() {
alkiot = new int[5];
}
/**
* Alutetaan valitun kokoinen taulukko
*
* @param koko taulukon koko
*/
public Taulukko(int koko) {
alkiot = new int[koko];
}
/**
* Listn taulukkoon yksi alkio
*
* @param luku listtv alkio
* @throws TaulukkoTaysiException jos taulukko tysi
*/
public void lisaa(int luku) throws TaulukkoTaysiException {
if (lkm >= alkiot.length) throw new TaulukkoTaysiException("Tila loppu");
alkiot[lkm++] = luku;
}
/**
* @param luku poistaa kaikki luvut esiintymät taulukosta
* @example <pre name="test">
* #THROWS Taulukko.TaulukkoTaysiException
* Taulukko luvut = new Taulukko(7);
* luvut.lisaa(1); luvut.lisaa(2); luvut.lisaa(1);
* luvut.toString() === "1,2,1"
* luvut.poista(1);
* luvut.toString() === "2"
* </pre>
*/
public void poista(int luku) {
int poistot = 0;
for (int i = 0; i < lkm; i++) {
if (alkiot[i] == luku) {
poistot++;
} else {
alkiot[i - poistot] = alkiot[i];
}
}
lkm -= poistot;
}
@Override
public String toString() {
StringBuilder s = new StringBuilder("");
String erotin = "";
for (int i = 0; i < lkm; i++) {
s.append(erotin + alkiot[i]);
erotin = ",";
}
return s.toString();
}
/**
* Asetetaan taulukon i's alkio
*
* @param i mihin paikkaan astetaan
* @param luku mik arvo laitetaan
* @throws IndexOutOfBoundsException jos vr indeksi
*/
public void set(int i, int luku) throws IndexOutOfBoundsException {
if ((i < 0) || (lkm <= i)) throw new IndexOutOfBoundsException("i = " + i);
alkiot[i] = luku;
}
/**
* Palautetana paikasssa i oleva luku
*
* @param i mist paikasta luku otetaan
* @return paikassa i olevan luvun arvo
* @throws IndexOutOfBoundsException jos indeksi vrin
*/
public int get(int i) throws IndexOutOfBoundsException {
if ((i < 0) || (lkm <= i)) throw new IndexOutOfBoundsException("i = " + i);
return alkiot[i];
}
@Override
public Taulukko clone() {
Taulukko t1 = new Taulukko(alkiot.length);
t1.lkm = lkm;
t1.alkiot = this.alkiot.clone();
return t1;
}
}
package d9;
/**
* * @author Joonas Yli-Saari
* * @version 1.0, 16.03.2025
*/
public class TehtavaT2 {
public static void main(String[] args) {
System.out.println(pisinNouseva("abajiuxc"));
System.out.println(pisinNouseva("kissa"));
System.out.println(pisinNouseva("abcdefg"));
System.out.println(pisinNouseva("dcba"));
System.out.println(pisinNouseva("ab"));
System.out.println(pisinNouseva("a"));
System.out.println(pisinNouseva(""));
}
/**
* Tarkistaa annetun merkkijonon kaikki merkit ja etsi mikä on pisin nouseva alimerkkijono
* @param merkkijono Merkkijono
* @return palauttaa pisimmän nousevan alimerkkijonon pituuden
* esim "kissa" => 3 (eli iss)
*
* @example <pre name="test">
* pisinNouseva("kissa") === 3
* pisinNouseva("abcdefg") === 7
* </pre>
*/
public static int pisinNouseva(String merkkijono) {
int pisin = 0;
int nouseva = 0;
char merkki = ' ';
for ( char c : merkkijono.toCharArray() ) {
if (c >= merkki) {
nouseva++;
} else {
pisin = nouseva;
nouseva = 1;
}
merkki = c;
}
// jos nouseva jono jatkuu silmukan loppuun asti
if ( nouseva > pisin ) {
pisin = nouseva;
}
return pisin;
}
}
package d9;
import java.io.*;
import java.util.Scanner;
/**
* Ohjelmalla kopioidaan sellaiset rivit toiseen tiedostoon, joiden alussa
* on yli 30 oleva luku.
* @author Joonas Yli-Saari
*/
public class TehtavaT3 {
/**
*
* @param args lähdetiedosto ja kohdetiedosto
*/
public static void main(String[] args) throws IOException {
String sourceFile = "";
String outputFile = "";
if (args.length < 2) {
System.out.println("Usage: java TehtavaT3 <sourceFile> <outputFile>");
} else {
sourceFile = args[0];
outputFile = args[1];
}
try (Scanner in = new Scanner(new FileInputStream(sourceFile)); PrintWriter out = new PrintWriter(new FileOutputStream(outputFile, true))) {
while (in.hasNext()) {
String line = in.nextLine();
String[] osat = line.trim().split(" ");
int numero = 0;
try {
numero = Integer.parseInt(osat[0]);
} catch (NumberFormatException _) {}
if ( numero >= 30 ) {
out.println(line);
}
}
} catch (FileNotFoundException e) {
System.err.println("Tiedosto ei aukea! " + e.getMessage());
}
}
}
package d9;
public class TehtavaT6 {
// Lisää aliohjelma poista kommentteineen ja testeineen tähän
/**
* Tulostetaan taulukosta lkm kappaletta lukuja
* @param t käsiteltävä taulukko
* @param lkm käsitelteltävien alkioiden lkm
*/
public static void tulosta(int[] t, int lkm) {
int tlkm = lkm;
if (tlkm > t.length) tlkm = t.length;
for (int i = 0; i < tlkm; i++)
System.out.print(t[i] + " ");
System.out.println();
}
/**
* Poistaa taulukosta kaikki esiintymät annetusta numerosta ja pqlauttaa jäljellä olevien alkioiden lukumäärän
* @param t taulukko josta poistetaan
* @param lkm alkioiden lukumäärä
* @param numero poistettava numero
* @return palauttaa lkm - poistolkm
*
* @example <pre name="test">
* int[] t = { 4, 7, 6, 3, 6, 2 };
* int lkm = 6;
* poista(t, lkm, 6) === 4
* </pre>
*/
public static int poista(int[] t, int lkm, int numero) {
int poistot = 0;
for (int i = 0; i < lkm; i++) {
if (t[i] == numero) {
poistot++;
} else {
t[i-poistot] = t[i];
}
}
return lkm - poistot;
}
public static void main(String[] args) {
int[] t = { 4, 7, 6, 3, 6, 2 };
int lkm = 6;
lkm = poista(t, lkm, 6); /* => t = {4,7,3,2}, lkm = 4 */
tulosta(t, lkm);
}
}
33 hiljaa 1 hiipii
hyvä 33 tulee
25 jep
36 1 3 5 55
nyt 33 riittää
\ No newline at end of file
package vkoe;
public class VKseko02 {
public static class Sorsa {
private int vari;
private String nimi;
public Sorsa() { nimi = "Repe"; vari = 0; }
public Sorsa(StringBuilder inimi) {
inimi.append("Aku"); vari = 2;
}
void hyppaa(Sorsa apu) {
apu.nimi = "Senkin Sorsa";
vari++;
}
void tulosta() {
vari++;
System.out.println(nimi + " " + vari);
}
}
public static void main(String[] args)
{
StringBuilder nimi = new StringBuilder("Väiski");
Sorsa aku = new Sorsa(nimi);
System.out.println(nimi);
aku.tulosta();
{
Sorsa repe = new Sorsa();
repe.tulosta();
aku.hyppaa(repe);
aku.tulosta();
aku = repe;
}
aku.tulosta();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment