Archief - StringBuffer probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

deathsythe

Legacy Member
Hallo, de opgave is om een chemische formule in te lezen en deze dus zo in een array te plaatsen ( Au, O, H, ...)

uiteindelijk moet je 2 formules ingeven en worden ze vergeleken, dus ze moeten gerangschikt worden etc.

nu als de invoer bijv 'HalloTest' zou zijn, dan moet in die array 'Hallo' en 'Test' als index 0 en 1 komen.

mijn code voor de invoer om te zetten in die array is als volgt;
Code:
public ChemischeStof(String f) {
    
   
	formule = f;
    }



public String conversie ()
     {
     	
     	
     	StringBuffer sb = new StringBuffer(formule);
     	StringBuffer [] array = new StringBuffer [formule.length()];
     
     	for (int i = 0 ; i < sb.length(); i++)
     	{
     		
     		char c = sb.charAt(i);
     		
     		boolean b = Character.isUpperCase(c);
     			if (b = true) 
     			{  
  					array[i] = new StringBuffer(c);
     			}
     			else
     			{
     				array[i].append(c);
     			}
     			
     	}
     	
     
     return Arrays.toString(array);



oproepen gebeurd via dit in de main; 


	Scanner sc = new Scanner (System.in);

	System.out.println("Geef de Eerste stof in;");
	String naam1 = sc.nextLine();
	ChemischeStof c1 = new ChemischeStof (naam1);
	
	String s = c1.conversie();

bij de uitvoer heb ik een array waar dus niets inzit, waar ben ik fout?

Cycloon

Legacy Member
Serieus, leer je debugger te gebruiken. Je hebt 10 regels code, als je dat al niet zelf kan debuggen dan kan je beter stoppen met programmeren.

deathsythe

Legacy Member
ik wil stoppen met programmeren, daar ik bouwkunde doe, bedankt voor de hulp alleszins.

Mackenzie

Legacy Member
Is u formule-variabele globaal geïnstantieerd in u ChemischeStof? Of kijk ik er nu over?

Daedie

Legacy Member
b == true ipv b = true. Nu is b altijd true in die if/else conditie.

That being said. Als ge nog een aantal programmeeropdrachten voor de boeg hebt zou ik wel cycloon zijn raad opvolgen. Of toch op zen minst uw te debuggen code (tijdelijk) even volsteken met prints om uw fouten op te sporen.

Als ge hier een print had gestoken na de if en één na de else had ge al kunnen opmerken dat de else nooit betreden wordt.

edit: ik geef ook geen garantie dat dit uw enige fout was. :p

NeverwinterX

Legacy Member
deathsythe zei:
Code:
public String conversie ()
     {
     	
     	
     	StringBuffer sb = new StringBuffer(formule);
     	StringBuffer [] array = new StringBuffer [formule.length()];
     
     	for (int i = 0 ; i < sb.length(); i++)
     	{
     		
     		char c = sb.charAt(i);
     		
     		boolean b = Character.isUpperCase(c);
     			if (b = true) 
     			{  
  					array[i] = new StringBuffer(c);
     			}
     			else
     			{
     				array[i].append(c);
     			}
     			
     	}
     	
     
     return Arrays.toString(array);

bij de uitvoer heb ik een array waar dus niets inzit, waar ben ik fout?

Enkele dingen om over na te denken:
  • Je kan niet de lengte van je array op even lang als de formule instellen omdat er minder chemische tekens zullen zijn als letters in de formule.
  • De i (van 0 tot aantal letters in de formule) als index gebruiken in je array houdt dan ook geen steek.
  • Maak kennis met de List<string>.
  • Gebruik == om te kijken of iets gelijk is aan iets, = dient voor toekenning.
  • Een string is immutable: test.append(bla) gaat niets veranderen aan test, het geeft een nieuwe string terug.
  • test.append(bla) zal falen als test null is.

deathsythe

Legacy Member
ah ja die '=true', dom :)

nuja ik werk met jcreator LE, daar kunt ge niet mee debuggen veronderstel ik?

nuja ik zal nog wat verder zoeken alleszins bedankt voor de tips.

*edit al terug gepost, bedankt voor de info

Cycloon

Legacy Member
Zelf al biedt jcreator geen debugger aan, dan zou je nog steeds de raad van Daedie kunnen volgen en je code volsteken met System.out.println("tralala") lijnen.

En anders moet je maar eens op zoek gaan naar netbeans of eclipse, die bieden dat wel aan.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan