Sssda1 Skrevet 20. august 2012 Del Skrevet 20. august 2012 (endret) Hei! Jeg fikk en oppgave på skolen om å lage et program som gjorde x ant sekunder om til timer, minutter og sekunder, og det er greit nok. Jeg ville prøve å få til at om det var kun feks ett sekund ( "Det er 3 timer, 13 minutter og 1 sekund" ) så skal det stå sekund i stedet for sekunder. Så det jeg lurer på er vel om det er en annen metode jeg skulle bruke for å få til dette, da jeg syns det ble veldig rotete og langt, selv om det fungerte. Takker for svar! her er forresten koden, begynte å kode for to dager siden så sikkert noen rare metoder etc =) import javax.swing.JOptionPane; public class Oppg5 { public static void main(String[] args) { String sek; int ant, time, minutt, sekund; sek = JOptionPane.showInputDialog( "Antall sekunder: " ); ant = Integer.parseInt( sek ); time= ant / 3600; minutt = (ant % 3600) / 60; sekund = ant - ((time * 3600) + (minutt * 60)); if (time != 1) { if (minutt != 1) { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutter og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutter og " +sekund + " sekund!" ); } } else { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutt og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutt og " +sekund + " sekund!" ); } } } else { if (minutt != 1) { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " time, " +minutt + " minutter og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " time, " +minutt + " minutter og " +sekund + " sekund!" ); } } else { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " time, " +minutt + " minutt og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutt og " +sekund + " sekund!" ); } } } } } edit: code tags Endret 21. august 2012 av perpers Lenke til kommentar
geir__hk Skrevet 20. august 2012 Del Skrevet 20. august 2012 Det er bare å bruke and() statement. Dvs if ( and(time != 1;minutt != 1;sekund != 1) { // enelleranna kode } Nå er det en stund siden jeg holdt på med java, men jeg gjetter på semikolon som separator, men kan være komma óg. Lenke til kommentar
HV Skrevet 21. august 2012 Del Skrevet 21. august 2012 Se Hei! Jeg fikk en oppgave på skolen om å lage et program som gjorde x ant sekunder om til timer, minutter og sekunder, og det er greit nok. Jeg ville prøve å få til at om det var kun feks ett sekund ( "Det er 3 timer, 13 minutter og 1 sekund" ) så skal det stå sekund i stedet for sekunder. Så det jeg lurer på er vel om det er en annen metode jeg skulle bruke for å få til dette, da jeg syns det ble veldig rotete og langt, selv om det fungerte. Takker for svar! her er forresten koden, begynte å kode for to dager siden så sikkert noen rare metoder etc =) import javax.swing.JOptionPane; public class Oppg5 { public static void main(String[] args) { String sek; int ant, time, minutt, sekund; sek = JOptionPane.showInputDialog( "Antall sekunder: " ); ant = Integer.parseInt( sek ); time= ant / 3600; minutt = (ant % 3600) / 60; sekund = ant - ((time * 3600) + (minutt * 60)); if (time != 1) { if (minutt != 1) { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutter og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutter og " +sekund + " sekund!" ); } } else { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutt og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutt og " +sekund + " sekund!" ); } } } else { if (minutt != 1) { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " time, " +minutt + " minutter og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " time, " +minutt + " minutter og " +sekund + " sekund!" ); } } else { if (sekund != 1) { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " time, " +minutt + " minutt og " +sekund + " sekunder!" ); } else { JOptionPane.showMessageDialog( null, ant + " sekunder = " +time + " timer, " +minutt + " minutt og " +sekund + " sekund!" ); } } } } } Dette er en minimal forbedring, forstår du denne: String s = ant + " sekunder = "; if (time != 1) { s += time + " timer, "; } else { s += time + " time, "; } if (minutt != 1) { s += minutt + " minutter og "; } else { s += minutt + " minutt og "; } if (sekund != 1) { s += sekund + " sekunder!"; } else { s += sekund + " sekund!"; } JOptionPane.showMessageDialog(null, s); Lenke til kommentar
tom waits for alice Skrevet 21. august 2012 Del Skrevet 21. august 2012 (endret) Har ikke Java en "conditional operator", som lar deg si noe sånt som s += time + " time" + (time == 1 ? ", " : "r, "); s += minute + " minutt" + (minutt == 1 ? " og " : "er og "); s += sekund + " sekund" + (time == 1 ? "!" : "er!"); JOptionPane.showMessageDialog(null, s); Edit: Altså: "Hvis time er lik 1, velg første alternativ etter spørsmålstegnet, hvis ikke velg det andre." Geir Endret 21. august 2012 av tom waits for alice Lenke til kommentar
GeirGrusom Skrevet 21. august 2012 Del Skrevet 21. august 2012 (endret) String Flertallifiser(int tall, String navn) { return tall.toString() + " " + tall == 1 ? navn : (navn + navn.endsWith("e") ? "r" : "er"); } String TallifyTid(int timer, int minutter, int sekunder) { return Flertallifiser(timer, "time") + ", " + Flertallifiser(minutter, "minutt") + " og " + Flertallifiser(sekunder, "sekund") + "!" } edit: Stor S i String Endret 21. august 2012 av GeirGrusom Lenke til kommentar
Sssda1 Skrevet 21. august 2012 Forfatter Del Skrevet 21. august 2012 Dette er en minimal forbedring, forstår du denne: String s = ant + " sekunder = "; if (time != 1) { s += time + " timer, "; } else { s += time + " time, "; } if (minutt != 1) { s += minutt + " minutter og "; } else { s += minutt + " minutt og "; } if (sekund != 1) { s += sekund + " sekunder!"; } else { s += sekund + " sekund!"; } JOptionPane.showMessageDialog(null, s); Denne var jo mye bedre Takk! Skal prøve å finne ut hvordan den virker =) Prøvde å sette inn koden til GeirGrusom : String Flertallifiser(int tall, String navn) { return tall.toString() + " " + tall == 1 ? navn : (navn + navn.endsWith("e") ? "r" : "er"); } String TallifyTid(int timer, int minutter, int sekunder) { return Flertallifiser(timer, "time") + ", " + Flertallifiser(minutter, "minutt") + " og " + Flertallifiser(sekunder, "sekund") + "!" men det fikk jeg ikke til. Takk for hjelp Lenke til kommentar
GeirGrusom Skrevet 21. august 2012 Del Skrevet 21. august 2012 Jeg skrev det på frihånd, men ser ikke noe galt med det jeg har skrevet. import javax.swing.JOptionPane; public class Oppg5 { static String Flertallifiser(int tall, String navn) { return tall.toString() + " " + tall == 1 ? navn : (navn + navn.endsWith("e") ? "r" : "er"); } static String TallifyTid(int timer, int minutter, int sekunder) { return Flertallifiser(timer, "time") + ", " + Flertallifiser(minutter, "minutt") + " og " + Flertallifiser(sekunder, "sekund") + "!" } public static void main(String[] args) { JOptionPane.showMessageDialog(null, TallifyTid(5, 1, 2)); } } Burde gi en message box som sier "5 timer, 1 minutt og 2 sekunder" dersom du kaller Hallo(). Lenke til kommentar
tom waits for alice Skrevet 21. august 2012 Del Skrevet 21. august 2012 Du må lime inn de to metodene, og så kaller du TallifyTid med variablene time, minutte og sekund som parameter. (GeirGrusom har dem i flertall i eksemplet, men kallet til metoden må bruke dine variabelnavn. Geir Lenke til kommentar
Kiff Skrevet 21. august 2012 Del Skrevet 21. august 2012 (endret) Litt avhengig om du vil være sikker på begrensningen til metoden (f.eks natt/netter) eller ikke kan du også bruke enum private static enum Type { MIN, HRS, SEC }; private static String flertallifiser(int amount, Type t) { switch (t) { case MIN: return "minutt" + (amount != 1 ? "er" : ""); case HRS: return "time" + (amount != 1 ? "r" : ""); case SEC: return "sekund" + (amount != 1 ? "er" : ""); } return ""; // throw new shouldNeverHappenException(); } kall med flertallifiser(minutter, Type.MIN); edit:typo Endret 21. august 2012 av Kiff Lenke til kommentar
Sssda1 Skrevet 21. august 2012 Forfatter Del Skrevet 21. august 2012 Det er nok bare kunnskapene mine som kommer til kort, har ikke lært om return, static, og String(med argumenter) ennå. Jeg skjønner nok mer om en ukes tid eller noe. Tusen takk for tilbakemeldinger Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå