Toon posts:

[JAVA] Ongelijk aan bij Strings != ??

Pagina: 1
Acties:
  • 540 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb onderstaand script gemaakt. Als ik hem draai dan doet ie het niet goed, klopt het volgende: if(line.substring(8,9) != insert_word.substring(i,i+1)) { lt_wis++; } ?? Het zijn 2 strings, kan dit??
Zo niet wat kan dan wel? en zo ja, waarom doet ie het dan niet???

Alvast Bedankt,

Kolky


import java.io.*;
import java.net.URL;

public class test
{
private String insert_word;
int lt_wis;

public test()
{
insert_word = "";
}
public void insert(String word)
{
insert_word = word;
}

public void showFile(String fileName)
throws IOException
{
InputStream fstream = openFile(fileName);

BufferedReader in = new BufferedReader(new InputStreamReader(fstream));

lt_wis = 0;
System.out.println("File: " + fileName);
String line = in.readLine();
while(line != null) {
for (int i=0; i < 9; i++)
{
if(line.substring(0,1) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(1,2) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(2,3) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(3,4) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(4,5) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(5,6) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(6,7) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(7,8) != insert_word.substring(i,i+1)) { lt_wis++; }
if(line.substring(8,9) != insert_word.substring(i,i+1)) { lt_wis++; }
}
System.out.println("Letters inwisselen: " + lt_wis);
lt_wis = 0;

}
}
public InputStream openFile(String fileName)
throws IOException
{
if(fileName == null)
throw new IOException("Je hebt geen file opgegeven!");
URL url = getClass().getClassLoader().getResource(fileName);
if(url == null)
throw new IOException("Bestand niet gevonden: " + fileName);
return url.openStream();
}
}

  • Donderwolk
  • Registratie: Januari 2002
  • Laatst online: 11-06 11:16
Heb het ook al verscheidene malen meegemaakt dat strings ongelijk aan elkaar zijn. Dus "huis" != "huis" had dan als uitkomst: waar. De oplossing hiervoor is om de functie .compareTo( String s ). Te gebruiken. Bijv: huis.compareTo( huis ).
Dit geeft een getal terug. Is dat getal 0 dan zijn de strings gelijk. Weet niet precies wat de oorzaak is voor dit soort fouten.

zet trouwens even code haken om je code, dit maakt het wat leesbaarder:

[ code=java]
code hier
[ /code]

alleen dan zonder de spatie na de 1e brackets.

[ Voor 21% gewijzigd door Donderwolk op 19-11-2003 14:13 ]

Pwnd


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

string is een object

string.equals(anderestring) of string.equalsIgnoreCase(anderestring) gebruik je voor het vergelijken ;)

  • Stewie!
  • Registratie: September 2001
  • Nu online

Stewie!

Keen must die!

en zo heb je nog meer functies, maar die staan allemaal in de online java documentatie (moet je zeker naast je IDE hebben!)


Strava: https://www.strava.com/athletes/149347154


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Iets zinniger dan je eigen compareTo te gebruiken is om strings te vergelijken als volgt:

code:
1
2
3
4
5
6
7
8
9
10
String a = "a";
String b = "b";
if(a.equals(b))
{
   System.out.println("boe");
}
else
{
   System.out.println("bah");
}

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Dit is iets dat thuis hoort in Programming & Webscripting, maar aangezien het vergelijken van twee strings me goed lijkt op te zoeken in handleidingen / tutorials (voorbeeldje) en daar leer je natuurlijk het meeste van, sluit ik dit topic ipv het te verplaatsen. Als het niet lukt: open dus even een nieuw topic in PW maar lees natuurlijk wel eerst even de sticky topics (Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/Sticky_off.gif) bovenaan dit subforum :)

Succes :Y)

[ Voor 9% gewijzigd door F_J_K op 19-11-2003 14:35 . Reden: Ik ben een RML prutser :o ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • momania
  • Registratie: Mei 2000
  • Laatst online: 18:31

momania

iPhone 30! Bam!

Door:
Java:
1
 while(line != null) 

Kom je in een oneindige loop, want je leest nergens meer opnieuw uit de file via
Java:
1
line = in.readLine();

Daarbij hoort dit niet in Software Algemeen, maar in Programming & Webscripting.
Aangezien dit vrij basic voor Programming & Webscripting is, gaat ie dicht :)

edit:

spuit 11.... hoi F_J_K :w

[ Voor 5% gewijzigd door momania op 19-11-2003 14:40 ]

Neem je whisky mee, is het te weinig... *zucht*

Pagina: 1

Dit topic is gesloten.