Archief - programmeren

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.

Beste taal om mee te beginnen?


  • Totaal aantal stemmers
    44
  • Opiniepeiling gesloten.

homerna

Legacy Member
emerging zei:
zou het goed zijn eens te beginnen zoiets door te lezen: http://greenteapress.com/thinkapjava/thinkapjava.pdf ?
Ik ken het niet maar als ik er eens door scroll lijkt het me wel in orde. Java wordt niet als doel gezien, maar als middel om concepten duidelijk te maken, ideaal dus. Op die manier pin je je niet vast op 1 taal met zijn implementatie maar zie je het groter geheel: de concepten en verbanden. Een keer je die door hebt is een nieuwe taal leren eigenlijk niet meer dan een nieuwe syntax en de eigenaardigheden die elke taal heeft, maar de logica, het concept en het fingerspitzengefühl heb je dan al.

emerging

Legacy Member
homerna zei:
Ik ken het niet maar als ik er eens door scroll lijkt het me wel in orde. Java wordt niet als doel gezien, maar als middel om concepten duidelijk te maken, ideaal dus. Op die manier pin je je niet vast op 1 taal met zijn implementatie maar zie je het groter geheel: de concepten en verbanden. Een keer je die door hebt is een nieuwe taal leren eigenlijk niet meer dan een nieuwe syntax en de eigenaardigheden die elke taal heeft, maar de logica, het concept en het fingerspitzengefühl heb je dan al.

dankje, net een paar paginaatjes doorgelezen en wat geprobeerd

Probeerde net ook iets in de aard van:

int x = 5;
System.out.println("blabla" + (int) x - (int) 1) ;

maar dat werkte niet
er staat een String in dus dacht om x en 1 zeker als int op te geven zet ik er (int) voor maar dat volstaat niet? door (int) (x-1) of ((int) x - 1) op te geven werkte het wel (heb gewoon wat geprobeerd), maar begrijp de logica er niet echt achter.

Ik had Eclipse geïnstalleerd maar volgens die handleiding moet ik nu GridWorld installeren. Komt dat ongeveer op hetzelfde neer?

Mauw

Legacy Member
Je wilt een string uitprinten, dus alles tussen de haakjes moet naar een string geconverteerd worden.

System.out.println("blabla" + (x - 1).ToString());

x is al gedefiniëerd als integer dus (int) x schrijven heeft geen zin :)

emerging

Legacy Member
Mauw zei:
Je wilt een string uitprinten, dus alles tussen de haakjes moet naar een string geconverteerd worden.

System.out.println("blabla" + (x - 1).ToString());

x is al gedefiniëerd als integer dus (int) x schrijven heeft geen zin :)
dankje
System.out.println("blabla" + (int)(x - 1)); gaf ook hetzelfde resultaat

Kevdeco1989

Legacy Member
Code:
Public class oefening {

        Public static void main(String[] args) {

Int x = 5;
System.out.println("" + (x-1));
         }
}

Dit gaf als resultaat 4 in mijn console.( als je het in een frame wilt dien je nog een frame te maken)

Recipe4hate

Legacy Member
emerging zei:
dankje
System.out.println("blabla" + (int)(x - 1)); gaf ook hetzelfde resultaat

Dit zou je moeten vermijden. Je gaat een int naar een int casten en vervolgens naar een string.
Volgens mij (weet niet of dit ook in Java is) gaat er bij een stringconcatenatie (wat je in je voorbeeld probeert te doen) steeds de .ToString() method worden opgeroepen.
Bij value-type variabelen hoef je dus zelfs niet zelf te casten naar een string.

Bij reference-type variabelen zal de base.ToString() (deze van object) worden opgeroepen, die je eventueel zal kunnen overriden.
Dat is nog wat ver van je bed, maar onthou gewoon dat je zo weinig mogelijk casts dient uit te voeren.

Handigheidje (denk dat Java dit ook wel kan): als je -1 of +1 wil doen, kan je gebruik maken van de -- en ++ operators.
Afhankelijk of je het voor of na je variable naam zet (--x of x--), zal het je een andere prioriteit geven.
Probeer het even en laat maar weten of je snapt wat ik bedoel ;)

Edit: als jullie trouwens code willen tonen, zet dit dan altijd in de [ code ] [ /code ] tags
Dan blijft de formattering op 9L correct

Kevdeco1989

Legacy Member
Recipe4hate zei:
Edit: als jullie trouwens code willen tonen, zet dit dan altijd in de [ code ] [ /code ] tags
Dan blijft de formattering op 9L correct
Bedankt voor de tip ;)

emerging

Legacy Member
Recipe4hate zei:
Dit zou je moeten vermijden. Je gaat een int naar een int casten en vervolgens naar een string.
Volgens mij (weet niet of dit ook in Java is) gaat er bij een stringconcatenatie (wat je in je voorbeeld probeert te doen) steeds de .ToString() method worden opgeroepen.
Bij value-type variabelen hoef je dus zelfs niet zelf te casten naar een string.

Bij reference-type variabelen zal de base.ToString() (deze van object) worden opgeroepen, die je eventueel zal kunnen overriden.
Dat is nog wat ver van je bed, maar onthou gewoon dat je zo weinig mogelijk casts dient uit te voeren.

Handigheidje (denk dat Java dit ook wel kan): als je -1 of +1 wil doen, kan je gebruik maken van de -- en ++ operators.
Afhankelijk of je het voor of na je variable naam zet (--x of x--), zal het je een andere prioriteit geven.
Probeer het even en laat maar weten of je snapt wat ik bedoel ;)

Edit: als jullie trouwens code willen tonen, zet dit dan altijd in de [ code ] [ /code ] tags
Dan blijft de formattering op 9L correct

Ja, ik had het dus vergeten tussen haakjes te zetten en wanneer ik ...println("String" + x - 5) deed kreeg ik dus een error en probeerde het op te lossen, ik had het gewoon tussen haakjes moeten zetten anders maakt hij er Stringx - 5 van en van een String kan hij niets aftrekken, op zich wel logisch en begrijp het nu ook. Dankje voor de tips!

Maar even om te proberen :) :
Code:
public class GCD {

	public static void main(String[] args) {
		System.out.println(GCD(111111,24222));
	}
	
	public static int GCD (int a, int b) {
		if (b == 0) {
			return a;
		} else {
			return GCD (b,a%b);				
		}
	}
}





public static boolean palindromeCheck(String a){
	int l = a.length();
	int i = 0;
	
	while (i < l/2){
		if (a.charAt(i) != a.charAt(l-1-i)){
			return false;
		} else {
			i++;
		}
	}
	return true;
}

emerging

Legacy Member
Ben nu met java bezig en gaat wel aardig vooruit, toch zeker voor die 2 uurtjes ofzo die k er dagelijks insteek
Ben nu bezig op Treehouse en daar wordt het wel goed uitgelegd ookal zal dat voor Python ook wel zo zijn. Stap ik nog best over of niet?

homerna

Legacy Member
emerging zei:
Ben nu met java bezig en gaat wel aardig vooruit, toch zeker voor die 2 uurtjes ofzo die k er dagelijks insteek
Ben nu bezig op Treehouse en daar wordt het wel goed uitgelegd ookal zal dat voor Python ook wel zo zijn. Stap ik nog best over of niet?

Als je met Java uit de voeten kan zou ik het bij een taal houden. Een keer je de concepten door hebt kan je heel makkelijk wisselen, maar om de haverklap wisselen als dat nog niet zo is gaat je alleen maar in de war brengen.

emerging

Legacy Member
Code:
public String getSandwich(String str) {



  // remove first bread
  int i = 0;
  String bread1Removed = "";
  while (i<(str.length()-9) && bread1Removed == "") {

    if (str.substring(i,i+5).equals("bread")){
    bread1Removed = str.substring(i+5);
    }

  i++;

  }


  // remove second bread
  i = bread1Removed.length()-5;
  String bread2Removed = "";


 while (i>0 && bread2Removed == "") {

    if (str.substring(i,i+5).equals("bread")){
    bread2Removed = bread1Removed.substring(0,i);
    }

  i--;

  }


return bread2Removed;
}

Ik probeerde net wat oefeningetjes op CodingBat Java String-2 getSandwich maar blijf steken bij deze, iemand enig idee wat ik fout doe? Het probleem zou bij het 2e broodje moeten liggen waarbij ik achteruit werk. (== in de while () vervangen door .equals() verandert ook niets)

*Opgelost, was vergeten de string in de if-statement te veranderen

Recipe4hate

Legacy Member
Hmm, opletten met strings te vergelijken via de == operator.
Ik denk dat Java de .Equals() hiervoor heeft.

Even voor je opgezocht, jep:
Use the string.equals(String other) function to compare strings, not the == operator.

The function checks the actual contents of the string, the == operator checks whether the references to the objects are equal. Note that string constants are usually "interned" such that two constants with the same value can actually be compared with ==, but it's better not to rely on that.

C# heeft trouwens ook heel interessante comparisons ingebouwd, zoals String.IsNullOrEmpty()


En andere tip die ik je wil meegeven:
Begin zo vroeg mogelijk aan het aanleren van duidelijke naamgevingen.
Als iemand je code overneemt en moet 200 regels doorlezen om uit te zoeken wat of hoe variabele 'str' nu is: der gaat iemand niet content zijn :)

Zo ook het gebruik van naamconventie (hierover zal veel gediscussieerd kunnen worden, maar zolang je één conventie volgt die duidelijk is voor iedereen, zal het wel ok zijn):
Code:
[B]private class variables:[/B] underscore + lowerCamelCase (vb: private int _myVariable)
[B]inner scope variables:[/B] lowerCamelCase (vb: myInnerScopeCounter)
[B]class names:[/B] CamelCase/PascalCase (vb: MyClass)
[B]constant variables:[/B] Uppercase + underscores (vb: MY_FIXED_NUMBER)
[B]properties:[/B] CamelCase (vb: MyClass.NumberOfItems)
[B]methods/functions:[/B] CamelCase (vb: MyClass.CalculateNumberOfItems())
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