Toleranz bei equals

Status
Nicht offen für weitere Antworten.

Pendrake

Neues Mitglied
Hallo,

ich hab momentan ein kleines Problem und hoffe mir kann hier jemand helfen.
Im wesentlichen vergleiche ich über diesen Code 2 Dateien miteinander:

Java:
public static boolean compareFiles(File f1, File f2)
{
boolean same = true;
try
{
BufferedReader in1 = new BufferedReader(new FileReader(f1));
BufferedReader in2 = new BufferedReader(new FileReader(f2));

String inText1,inText2;

while ((inText1 = in1.readLine()) != null){
inText2 = in2.readLine();
if ((inText2==null)||(!inText1.equals(inText2)))
{
same = false;
break;
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
same = false;
}
catch(IOException e)
{
e.printStackTrace();
same = false;
}

return same;
}

Mein Problem ist nun, dass ich gerne eine gewisse Toleranz einfügen würde, bei "readline();", da ich mit diesem Code 2 Html Dateien vergleiche, welche sich in meinem Falle sowieso(auch wenn sie quasi gleich sind) immer um ca 2-3 Zeichen unterscheiden - bei diesen möchte ich, dass sie trotzdem diesen Test bestehen und vom Programm als gleich betrachtet werden.
Mir kam bisher die Idee, dass man einen Zähler einfügen könnte, für jedesmal wenn readline() nicht gleich ist und daraus eine Abbruchbedingung basteln könnte, jedoch wäre 1 ganze Zeile die anders ist schonwieder zu viel, das hab ich dann beim Testen gemerkt.:bahnhof:
Ich hoffe, ich hab das ganze einigermaßen verständlich formuliert.

Vielen Dank im Voraus,
mfg Pendrake
 
Zuletzt bearbeitet:

M4x0r

Aktives Mitglied
hi,
du könntest mit toCharArray() zwei arrays basteln und die zeichen für zeichen vergleichen und bei einem Fehler den zähler um 1 erhöhen :)
 

0din

Bekanntes Mitglied
Ich weiß zwar nicht genau was du mit der abbruchbedingung sagen willst aber wenn du zwei dateien mit einander vergleichen willst un ne gewisse fehlerquote ok findest,
würde ich dir zum einzelnen durchlaufen un vergleichen raten.

Soll heißen,
für jede zeile in f1 vergleich sie mit der entsprechenden zeile in f2
das ganze umgedreht (weil f2 vllt größer als f1 ist)
dabei werdn 2 zähler beigehalten
am ende vergleichen wir die beiden zähler noch mit einander und sind happy dasses tut :D


Ich hab dir das ganze mal etwas ausgearbeitet, obs für deine zwecke reicht weiß ich net aber sollte theoretisch bei 51% gleichheit ein true geben.

Java:
	public static boolean compareFiles(File f1, File f2)
	{
		int ungleich = 0;
		int gleich = 0;
		boolean same = true;
		try
		{
			BufferedReader in1 = new BufferedReader(new FileReader(f1));
			BufferedReader in2 = new BufferedReader(new FileReader(f2));
			
			while(in1.readLine() != null)
			{
				if(in1.readLine().equals(in2.readLine()))
				{
					gleich++;
				}
				else
				{
					ungleich++;
				}
			}
			
			/*
			 * Leider muss ich die Files neu einladen
			 * mit mark und reset sollte das besser gehn aber
			 * da fehlt mir das verständnis für das mark
			 */
			in1 = new BufferedReader(new FileReader(f1));
			in2 = new BufferedReader(new FileReader(f2));
			
			while(in2.readLine() != null)
			{
				if(in2.readLine().equals(in1.readLine()))
				{
					gleich++;
				}
				else
				{
					ungleich++;
				}
			}
			
			if(gleich > ungleich)
			{
				same = true;
			}
			
			
		}
		catch (Exception e)
		{
			e.printStackTrace();
			same = false;
		}

		return same;
	}
 

Ark

Top Contributor
Mein Problem ist nun, dass ich gerne eine gewisse Toleranz einfügen würde, bei "readline();", da ich mit diesem Code 2 Html Dateien vergleiche, welche sich in meinem Falle sowieso(auch wenn sie quasi gleich sind) immer um ca 2-3 Zeichen unterscheiden - bei diesen möchte ich, dass sie trotzdem diesen Test bestehen und vom Programm als gleich betrachtet werden.
Was heißt denn, dass zwei Zeilen ähnlich sind? Kannst du genauer formulieren, wann das der Fall ist? Wo ist die Toleranzgrenze?

Und noch eine andere Frage: Muss es unbedingt equals() sein? Viele Strukturen hängen von dieser Methode ab, und da sollten Toleranzen sehr wohl überlegt sein, sonst gibt es böse Überraschungen.

Ark
 

Pendrake

Neues Mitglied
Vielen Dank für die Anregungen und natürlich Odin, der sich extra die Mühe gemacht hat und mir den Code überarbeitet hat.
Schlussendlich bin ich jetzt bei dem Vergleich per Array geblieben wie M4x0r es vorgeschlagen hat, da es bei mir ja wie im 1. Post erwähnt um Zeichen und nicht um Reihen ging, bei denen der Fehler auftrat. Warum es jetzt um Zeichen geht und nicht wie geplant um Reihen müsste ich jetzt nochmal ergründen, jedoch löst dies erstmal mein Problem ;)
Warschl. werde ich(da grade dies sehr wichtig ist bei mir) einfach per Argument übergeben wie hoch die Toleranz sein darf.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Werte mit Prozentualer Toleranz vergleichen Java Basics - Anfänger-Themen 11
M Vergleich mit Toleranz Java Basics - Anfänger-Themen 7
Say Equals Java Basics - Anfänger-Themen 6
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
lallmichnichtzu Methoden Überladen des .equals-Operators Java Basics - Anfänger-Themen 6
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
G Java equals() Methode Java Basics - Anfänger-Themen 9
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
O equals Methode möglichst effizient Java Basics - Anfänger-Themen 13
H equals methode Java Basics - Anfänger-Themen 1
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
A OOP Richtige Verwendung von ArrayList und equals Java Basics - Anfänger-Themen 24
E equals Prüfung fehlgeschlagen Java Basics - Anfänger-Themen 3
C Objekt equals Java Basics - Anfänger-Themen 2
L String überprüfen mit .equals .contains oder .matches? Java Basics - Anfänger-Themen 1
H equals Methode Java Basics - Anfänger-Themen 1
F String equals NULL Problem Java Basics - Anfänger-Themen 4
D Auf equals von Vaterklasse zugreifen Java Basics - Anfänger-Themen 4
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
E Calender - Equals Problem Java Basics - Anfänger-Themen 14
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
A Probleme mit equals und get.Text Java Basics - Anfänger-Themen 12
S compareTo() und equals() Java Basics - Anfänger-Themen 6
S equals Methode bei String Java Basics - Anfänger-Themen 5
R illegal start of expression - 3 Strings vergleichen mit .equals () Java Basics - Anfänger-Themen 5
K Cast bei equals Java Basics - Anfänger-Themen 2
T SQL equals Java Basics - Anfänger-Themen 4
OnDemand Methoden Equals Methde Java Basics - Anfänger-Themen 3
D if block mit equals im rumpf Java Basics - Anfänger-Themen 11
K Vererbung equals-Methode bei Vererbung abstrakter Klassen Java Basics - Anfänger-Themen 8
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
K String - Equals Java Basics - Anfänger-Themen 2
J Klassen Warum ist (a.equals(b)) gleich (a==b)? Java Basics - Anfänger-Themen 13
B Warum gibst hier Equals false zurück ? Java Basics - Anfänger-Themen 23
S Verständnissfrage equals() Java Basics - Anfänger-Themen 2
R compareTo & equals Java Basics - Anfänger-Themen 10
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
W Stringvergleich mit equals Java Basics - Anfänger-Themen 13
C equals() Java Basics - Anfänger-Themen 4
D Problem mit string.equals bzw string.contains Java Basics - Anfänger-Themen 4
T Problem mit der while(!string.equals("x")) Java Basics - Anfänger-Themen 2
E Equals-Methode auf Class-Object Java Basics - Anfänger-Themen 17
X problem mit equals.gelöst Java Basics - Anfänger-Themen 2
J Methode equals() Java Basics - Anfänger-Themen 7
M Equals überschreiben Java Basics - Anfänger-Themen 3
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
K equals in Hashmap() Java Basics - Anfänger-Themen 4
B if equals(irgendeine Zahl+Buchstabe) Java Basics - Anfänger-Themen 6
T equals() und hashCode() Java Basics - Anfänger-Themen 7
D probs mit clone und equals Java Basics - Anfänger-Themen 10
3 Collections containsKey() liefert false obwohl equals() true liefert Java Basics - Anfänger-Themen 6
N Vergleich per equals Java Basics - Anfänger-Themen 5
S comparable und equals Java Basics - Anfänger-Themen 7
M Frage zu Textvergleich (equals) Java Basics - Anfänger-Themen 8
G Strings vergleichen mit equals, geht das kürzer? Java Basics - Anfänger-Themen 4
B Frage zu Funktion mit equals Java Basics - Anfänger-Themen 17
D Eigene equals methode schreiben Java Basics - Anfänger-Themen 4
J Gibt es eine möglichkeit ähnlich wie .equals(bedingung1 ||bedingung ..n) ? Java Basics - Anfänger-Themen 5
D "2010–03–12".equals( "2010-03-12" ) Java Basics - Anfänger-Themen 6
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
T Problem mit equals Java Basics - Anfänger-Themen 5
K Equals,Instanceof und "==" Java Basics - Anfänger-Themen 7
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
S equals vergleich Java Basics - Anfänger-Themen 10
H Equals hascode Java Basics - Anfänger-Themen 5
S Equals Downcast? Java Basics - Anfänger-Themen 11
D equals Vergleiche Java Basics - Anfänger-Themen 7
L String mit equals vergleichen Java Basics - Anfänger-Themen 6
neurox Tutorial equals und hashCode überschreiben Java Basics - Anfänger-Themen 33
F String equals null wird nicht angenommen. Java Basics - Anfänger-Themen 24
A Reihenfolge bei equals() Java Basics - Anfänger-Themen 2
B Frage zu equals() und hashCode() Java Basics - Anfänger-Themen 28
A veränderbar kanonische Klassen: Methode equals, hashcode, serializable Java Basics - Anfänger-Themen 5
D String#equals + String#charAt Java Basics - Anfänger-Themen 5
S equals() - hashCode() - Contract Java Basics - Anfänger-Themen 54
G mehrere Werte für .equals ? Java Basics - Anfänger-Themen 22
G [SOLVED] Java String equals funktioniert nicht Java Basics - Anfänger-Themen 5
C 2 Objekte (mathematisch) vergleichen in der equals Methode Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben