Gå til innhold

Hjelp. n00b skal skrive til terminal.


Anbefalte innlegg

Heisan. Jeg har akkurat begynt på INF1000 ved UiO hvor vi skal lære Java.

 

I C++ brukte jeg clrscr() og gotoxy kommandoene for å lage et godt brukergrensesnitt. Det fungerte da slik at man fikk opp en meny med numererte valg, og når man slo inn et tall utførtes denne kommandoen og resulatet kom under menyen. Hvis man så utførte en til kommando, så gjorde jeg det slik at konsollvinduet ble klarert (clrscr()), og så tegnes menyen og det nye resultatet, slik at det for brukere ser ut som om det nye resultatet overskrev det forige. På denne måten slipper man å få en lang rekke med tegnede menyer og resultater i konsollvinduet.

 

Problemet mitt er at jeg ikke finner noen måte å gjøre noe lignende i Java på. Jeg lurer på om dere har noen tips til hvordan jeg kan få dette til, eventuelt helt andre måter å håndtere problemet på (brukeren gjør et valg, programmet gjør sitt osv.). Her følger koden og en ferdig kompilert .class fil.

 

Kildekode: Oblig1.java

 

.class fil: Oblig1.class

 

Husk at jeg er høvelig n00b på programmering. Har bare hatt noe C++ på VGS.

 

Takker for all hjelp.

Lenke til kommentar
Videoannonse
Annonse

Den beste måten er vell egentlig å lage sitt eget lille vindu, men dersom oppgaven er å lage et console basert program så er ikke det så lurt. Har ikke EasyIO pakken, så jeg får ikke testet programmet. Du kan prøve å kjøre "cls" kommandoen (Windows) (ved å bruke Runtime.exec()), husker ikke om "cls" heter "cls" i Linux også.

 

Du burde også fikset litt på kildekoden. Var noen utrolig lange linjer der. Generelt sett bør du i det minste hive inn et linjeskift etter ";". Det er så utrolig frustrende å rette oppgaver med endeløse linjer og lignende. Er heller ikke uvanlig at det ryker en god del poeng dersom man skriver rotete kode.

 

Hilsen en som har rettet over hundre obligatoriske innleveringer ved Institutt for informatikk(UiB).

Lenke til kommentar

Gruppe 6 da eller... er jeg på også :p hva er sannsyligheten sier bare jeg. Men den der så litt mer avansert ut en det jeg hadde gjort.

 

oblig1 filene:

.class

.java

 

Så i dag tidlig, lenge etter at jeg leverte at jeg hadde double og ikke int på ett heltall, men tenkte at det får bare gå.

 

edit: skulle den ikke vært levert 42 minutter før du skrev dette innlegget? ;)

 

men har desverre ikke noe rellevant forslag å komme med her.

Endret av zeltex
Lenke til kommentar

Jo. Skulle være levert kl. 1600. Derfor jeg ventet til etter fristen (anti-leech :p). Jeg leverte inn i tide.

 

mar: Mener du jeg burde dele inn mer enn jeg har gjort altså? De gangene jeg har hatt flere ; på samme linje skjønner jeg, men jeg syns det var ganske naturlig f.eks. her:

 

screen.out(" Gjennomsnittlig nedbor for dagene det regnet i mai og juni 2005 blir "); screen.out(svar, 2); screen.outln("mm.");

 

Siden det var en utskrift. Jeg fikk bare ikke til å gjøre dette i en screen.out.

 

Kan du copy-paste noen eksempler på hva du mener jeg kunne gjort for å gjøre det mer oversiktlig? Vil gjerne ha tips.

 

Takk for hjelpen.

Endret av dravisher
Lenke til kommentar

Du kan ta en titt her. Er ganske mye info, men det er en del ting som er kjekt å ta med seg videre.

 

På de/den første obligatoriske går det nok greit med litt rotete kode. Som feks unødvendig bruk av else/if. En switch ser så mye bedre ut, men dette kommer dere nok til etterhvert. Det som jeg husker var det største problemet var at alle studentene formaterte koden på sin egen måte. Noen hadde lange linjer, og aldri ekstra linjeskift, ofte med kommentarer blandet fint inn i koden. Andre brukte bare hver 5. linje osv.

 

Var mye diskusjoner internt om hva vi skulle kreve av studentene. Noen mente at det var formye å forlange at de tok en titt på "Java code conventions" fra Sun, som jeg linket til lenger oppe.

 

En ting er sikkert, følger du de mest grunnleggende tipsene fra Sun så blir den som retter glad når han/hun ser koden din, og det er jo alltid en fordel. Husker selv den gode følelsen når jeg åpnet en .java fil og fikk se ryddig kode, ble så mye lettere å rette da.

 

int valg=0, nedbDagerMai = 22, regnMai = 99, maiProsent = 187, nedbDagerJuni = 11, regnJuni = 41;

 

Slikt er det nok mange som vil mislike.

Endret av mar
Lenke til kommentar

du skal alltid ha masse mellomrom når du koder. bestandig etter ;, og etter if, else, while, for osv. fungerer selvfølgelig uten, men blir enklere for andre å lese det.

 

vet ikke hvor høyt kravet er hos dere, men på ntnu er det ikke noe krav om fin kode, men alle som retter øvinger vil påpeke det om det ikke ser bra ut. Vil ikke få noe trekk. men på eksamen må det se bra ut, hvis ikke blir det trekk, så det er greit å lære seg det med en gang. hvis du i tillegg studerer data må du før eller senere lære det uansett, så det lureste er å begynne før du får for mange uvaner.

 

når det gjelder spørsmålene om utskrift så er det vanskelig å svare på dette når du bruker en easyIo klasse som ikke er standard java, siden jeg ikke vet hva den gjør....

 

glemte å si det at mange av mine studenter trodde programmene gikk kjappere hvis de var kompakte, men det er ikke tilfelle. linjeskift og litt luft i koden gjør ikke at det går treigt :)

Endret av mikaelandre
Lenke til kommentar

Tror ikke det er noen særlig store krav til ryddig kode (er jo bare godkjent / ikke godkjent, ingen invirkning på karakter), men jeg vil jo gjerne gjøre det ok for de som skal rette. Jeg syns jo selv at koden min er ganske oversiktlig (men nå har jo jeg skrevet slik jeg er vant til å skrive fra C++, så jeg ser jo lett hva det er jeg selv holder på med). Men er det ikke vanlig å skrive f.eks. en if setning slik:

 

if (ettellerannet)

-----{

-----kode

-----}

(hvor '-' er linjeskift, linjeskift kom ikke med her.)

?

 

Jeg syns i allfall det er mye enklere å se når koden er litt spacet fra annen kode slik, og { og }kommer i samme horisontale posisjon, slik at man enklere ser hvilke klammer som hører sammen...

Endret av dravisher
Lenke til kommentar

les den linken han gav lenger oppe, der står java sin standard.

 

når det gjelder if er det to måter:

if( a == b ){
   noe rart.
}
else {
   noe annet
}

 

og:

 

if( a == b )
{
   noe rart.
}
else
{
   noe annet.
}

 

standard java er vel den øverste. Det mange gjør er å bruke den nederste måten på klasser og metoder, og den øverste på if, while og for. er vel egentlig fritt frem, jeg bruker den øverste på alt siden det er standard

Lenke til kommentar
screen.out("    Gjennomsnittlig nedbor for dagene det regnet i mai og juni 2005 blir "); screen.out(svar, 2); screen.outln("mm.");

 

Siden det var en utskrift. Jeg fikk bare ikke til å gjøre dette i en screen.out.

Du kan gjøre følgende. Har ikke brukt EasyIO, men ved System.out.println(); kan man gjøre følgende (og jeg regner med at screen.out() bare sender videre til System.out.println()):

 

System.out.println("     Gjennomsnittlig nedbor for dagene det regnet i mai og juni 2005 blir " + svar + " mm.");

 

Dersom du ønsker å ha kun 2 desimaler (går utifra at det er det screen.out(String, int) gjør)

 

DecimalFormat df = new DecimalFormat("0.00");
System.out.println("    Gjennomsnittlig nedbor for dagene det regnet i mai og juni 2005 blir " + df.format(svar) + " mm.");

 

Går også utifra at du kan bruke screen.outln direkte og:

 

DecimalFormat df = new DecimalFormat("0.00");
screen.outln("    Gjennomsnittlig nedbor for dagene det regnet i mai og juni 2005 blir " + df.format(svar) + " mm.");

 

En fjerde mulighet er å bruker screen.out("tekst\n") eller System.out.println("tekst\n") og legge inn linjeskift med \n.

Lenke til kommentar
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...