apwr Skrevet 30. oktober 2006 Skrevet 30. oktober 2006 (endret) Jeg har laget en kode som skal sammenligne om to tekster er like. Koden: import javax.swing.JOptionPane; public class TekstLikhet { public static void main(String[] args) { // Variabeldeklarasjon String inputStreng1; String inputStreng2; boolean bool1, bool2; // Initiering String inputStreng1 = JOptionPane.showInputDialog("Skriv inn en tekst"); String inputStreng2 = JOptionPane.showInputDialog("Skriv inn en annen tekst"); bool1 = true; bool2 = false; StrengLikhet.likhet(inputStreng1, inputStreng2); System.exit(0); } public static void likhet(char tegn1, char tegn2){ if (inputStreng1 == inputStreng2){ System.out.println("Tekstene er like: "+bool1); } else { System.out.println("Tekstene er like: "+bool2); } } Men jeg får følgende feilmelding: reached end of file while parsing } ^ 1 error Noen som vet hva som er feil? Endret 30. oktober 2006 av apwr
pgdx Skrevet 30. oktober 2006 Skrevet 30. oktober 2006 (endret) Rått klippet og redigert... import javax.swing.JOptionPane; class TekstLikhet { public static void main(String[] args) { // Variabeldeklarasjon String inputStreng1; String inputStreng2; boolean bool1, bool2; // Initiering inputStreng1 = JOptionPane.showInputDialog("Skriv inn en tekst"); inputStreng2 = JOptionPane.showInputDialog("Skriv inn en annen tekst"); bool1 = true; bool2 = false; likhet(inputStreng1, inputStreng2); System.exit(0); } static void likhet(String inputStreng1, String inputStreng2){ if (inputStreng1.equals(inputStreng2)){ System.out.println("Tekstene er like"); } else { System.out.println("Tekstene er ulike"); } } } 1: Finn noen nye navn til bool1 og bool2 2: Finn ut hva du skal returnere fra metoden 3: Hvorfor skal den skrive ut at strengen er lik: bool2 hvis ikke strengen er lik? Du har bare kopiert din char-sammenligning, ikke sant? Inneholdt alle de samme logiske feilene... Endret 30. oktober 2006 av drange
pgdx Skrevet 30. oktober 2006 Skrevet 30. oktober 2006 (endret) Versjon 2: Les denne koden i forhold til den forrige og forstå den. Altså, forstå hvert eneste tegn. import javax.swing.JOptionPane; class TekstLikhet { public static void main(String[] args) { // Variabeldeklarasjon String inputStreng1; String inputStreng2; boolean erLik; // Initiering inputStreng1 = JOptionPane.showInputDialog("Skriv inn en tekst"); inputStreng2 = JOptionPane.showInputDialog("Skriv inn en annen tekst"); erLik = likhet(inputStreng1, inputStreng2); if (erLik) System.out.println("Tekstene er like"); else System.out.println("Tekstene er ulike"); System.exit(0); } static boolean likhet(String inputStreng1, String inputStreng2){ if (inputStreng1.equals(inputStreng2)) return true; else return false; } } Endret 30. oktober 2006 av drange
EirikAskheim Skrevet 30. oktober 2006 Skrevet 30. oktober 2006 Hvorfor bruker du ikke bare: if (inputStreng1.equals(inputStreng2)) System.out.println("Tekstene er like"); else System.out.println("Tekstene er ulike"); ? Du kan også skjekke om de er like, men ignorere store/små bokstaver: if (inputStreng1.equalsIgnoreCase(inputStreng2)) System.out.println("Tekstene er like"); else System.out.println("Tekstene er ulike");
pgdx Skrevet 30. oktober 2006 Skrevet 30. oktober 2006 Jeg gikk ut ifra at oppgaven hans sa noe om metoder som returnerte en boolsk verdi, og tenkte jeg skulle bruke variabelen på en litt mer forståelig måte. Målet var at han skulle lære seg det, ikke skrive koden på færrest linjer som mulig.
apwr Skrevet 30. oktober 2006 Forfatter Skrevet 30. oktober 2006 Stemmer det, Drange! Takk for gode forklaringer, jeg forstår mer og mer for hver dag som går!
pgdx Skrevet 31. oktober 2006 Skrevet 31. oktober 2006 Du kan også returnere med kortmåten: return (string1.equals(string2)) ? true : false;
qualbeen Skrevet 31. oktober 2006 Skrevet 31. oktober 2006 Du kan også returnere med kortmåten:return (string1.equals(string2)) ? true : false; 7192857[/snapback] ehm: hvis man først skal minimalisere koden så skriv iallefall følgende, trengs jo ingen if-setning return string1.equals(string2));
fredrija Skrevet 3. november 2006 Skrevet 3. november 2006 Stemmer det, Drange! Takk for gode forklaringer, jeg forstår mer og mer for hver dag som går! 7187493[/snapback] har du IT1103 på NTNU. vi har iallefall de helt samme oppgavene der
blackbrrd Skrevet 3. november 2006 Skrevet 3. november 2006 (endret) Du kan også returnere med kortmåten:return (string1.equals(string2)) ? true : false; 7192857[/snapback] ehm: hvis man først skal minimalisere koden så skriv iallefall følgende, trengs jo ingen if-setning return string1.equals(string2)); 7194004[/snapback] haha det så kjent ut Støter borti gammel kode som det der i et ordresystem som ble først utviklet som et høgskoleprosjekt og har blitt videreutviklet i 5 år nå. (Systemet er i bruk av i et firma med ca 100 ansatte og håndterer ca 240000 ordre i året). Er like bra hver gang man ser kode som f.eks: int a = 1; if(a>2) { ResultSet rs = con.executeQuery("select * from torder where orderid = 22") } Eller int result = 0; if(intFromDatabase == 1) { result = 1; } else if(intFromDatabase == 2) { result = 2; } Programmet har også noe vanvittig bruk av java.util.Vector klassen som gjør at du omtrent må ha en i doktorgrad "udefinerte value objekter" for å skjønne noe... Den koden her: static boolean likhet(String inputStreng1, String inputStreng2){ if (inputStreng1.equals(inputStreng2)) return true; else return false; } } Er forresten utrolig mye kode for liten effekt. Det kvalifiserer nesten som obfuscating. Hele metoden kan jo oppsummeres i: inputStreng1.equals(inputStreng2) Metoden tar heller ikke hensyn til om inputStreng1 er null og vil throwe en NullPointerException. Det er omtrent eneste grunn til å ha en slik metode. Den burde da ha sett ut som noe lignende dette: static boolean likhet(String inputStreng1, String inputStreng2){ if(inputStreng1 == null && inputStreng2 == null) { return true; } else if(inputStreng1 == null) { // inputStreng2 er tydligvis ikke null, det er sjekket ovenfor // dermed er de to strengene ikke like return false; } else { // equals metoden i String klasse takler at parameteren er null. // inputStreng1 er ikke null, det ville det vært fanget opp // i en av if-ene ovenfor. return inputStreng1.equals(inputStreng2); } } Endret 3. november 2006 av blackbrrd
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å