Gå til innhold

Sammenligning av to tekster?


Anbefalte innlegg

Skrevet (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 av apwr
Videoannonse
Annonse
Skrevet (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 av drange
Skrevet (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 av drange
Skrevet

Hvorfor bruker du ikke bare:

if (inputStreng1.equals(inputStreng2)) System.out.println("Tekstene er like");
else System.out.println("Tekstene er ulike");

 

? :p

 

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");

Skrevet

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.

Skrevet
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));

Skrevet
Stemmer det, Drange!

Takk for gode forklaringer, jeg forstår mer og mer for hver dag som går! :thumbup:

7187493[/snapback]

 

 

har du IT1103 på NTNU. vi har iallefall de helt samme oppgavene der :p:cool:

Skrevet (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 av blackbrrd

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...