Java 2 probleem

Status
Niet open voor verdere reacties.

Darkool83

Gebruiker
Lid geworden
15 nov 2006
Berichten
16
Hallo daar,

Ik ben net nieuw met Java 2; ik ben er gister mee begonnen met het boek 'Java 2 in 24 uur' door 'Rogers Cadenhead'. Ik volgde de voorbeelden uit het boek zelf, en deze deden het prima. Ik probeer ook zelf varianten op de scripts te maken, zodat ik het uiteindelijk beter zal onthouden. Zelf heb ik deze gemaakt uit twee andere voorbeelden uit het boek, en ik snap niet wat er fout aan is:

Code:
class Root {
	public static void main(String[] arguments) {
		String number = arguments[0];
			System.out.println("The root of " + number + " is " + Math.sqrt(number) );
	}
}

Ik krijg de volgende foutmelding bij het compilen via cmd:

Code:
C:\Java\2. Root>javac root.java
root.java:4: sqrt<double> in java.lang.Math cannot be applied to <java.lang.String>
System.out.println<"The root of " + number + " is " + Math.sqrt<number> >;

1 error

Wie kan me helpen?

Bedankt, Patrick
 
Laatst bewerkt:
Math.sqrt(number) :
Je hebt number als een string gedefinieerd, echter Math.sqrt() verwacht een double.
Probeer de string number te casten naar een double.

Misschien is er een number.ToDouble() o.i.d ?
 
Het zal dan zijn:
Code:
Double.valueOf(number);

Goed om de hoofdletter denken, want als je het met kleine letter schrijft roep je de class aan.
 
Je hebt gelijk, ik heb het nog even nagezocht, dit is ook een mogelijkheid dacht ik:

String aString = "78";
double aDouble = Double.parseDouble(aString);
 
:shocked:

Bedankt voor jullie hulp, ook al begrijp ik er nog niets van. Maar dat komt nog wel!

EDIT:

Ik lees ben net toevallig in een hoofdstuk bezig waarin meerdere variabelen worden besproken. Zo heb ik hier de variabele 'int', voor de hele getallen, en 'float', voor de getallen met één decimaal. Waarom zijn daar allemaal aparte voor?
 
Laatst bewerkt:
Het geheugenruimte dat een integer nodig is, is kleiner dan de geheugenruimte die een float.

Ik ben vergeten wat deze aan aantal bytes vragen maar ik hoop dat iemand anders hier wel een antwoord op kan geven.
 
Ik heb wat doorgelezen en ben tot deze conclusie gekomen:

Code:
int = hele getallen (tussen de -2.14 en 2.14 miljard)
double = getal (tot 324 cijfers)
float = hele getallen en getallen met decimalen
long = getal groter dan int
short = getal kleiner dan int, en groter dan byte
byte = getal (tussen de -127 en 128)
String = een reeks tekens
char = een enkel teken
boolean = false/true

Met deze informatie heb ik geprobeerd een andere script te maken, die eenvoudige optel sommetjes maakt. Dit is me ook niet gelukt helaas.

Code:
class Calculator {
	public static void main(String[] arguments) {
		int som1 = arguments[0];
		int som2 = arguments[1];
		int antwoord = som1 + som2;
		System.out.println(som1 + " + " + som2 + " = " + antwoord);
	}
}

errorzv1.png
 
Laatst bewerkt:
Je kan niet zomaar een String in een int zetten zonder deze om te zetten.
Daarvoor die je de code:
Code:
int som1 = Integer.valueOf(arguments[0]);
int som2 = Integer.valueOf(arguments[1]);
int antwoord = som1 + som2;
System.out.println(String.valueOf(antwoord));

Maar heb je de String[] arguments wel gevuld? want anders kan je hele vreemde waarden krijgen.
bijvoorbeeld:
Code:
arguments[0] = "100";
arguments[1] = "200";
 
Maar heb je de String[] arguments wel gevuld? want anders kan je hele vreemde waarden krijgen.
bijvoorbeeld:
Code:
arguments[0] = "100";
arguments[1] = "200";

Nee, en ik heb ook geen idee wat je daarmee bedoelt. Wat ik zover heb geleerd is dat 'arguments[#]' een woord/letter/getal overneemt uit de code na het compileren, bijvoorbeeld:

Code:
java Calculator 5 10

zou 5+10 uitrekenen.
 
De string-array arguments als parameter van een main-functie wordt gebruikt om argumenten van de commandline op te halen.

Zoals af te lezen valt gaat het hier om een array( reeks) van Strings.
String = reeks chars = letters

Zoals hier al meerdere malen werd aangehaald dien je aan het programma duidelijk te maken dat die bewust argumenten als getallen moeten behandeld worden. (adhv valueOf() ; parse..() )

--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan