June 14, 2002
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Hejjj
Jag har försökt och koda ihop en kalkylator, som skall läsa in tre saker från prompten. Dels två tal och dels vilken sorts räkneoperation som ska utföras. Dessa värden ska skickas till en metod som gör uträkningen.
Här e koden, den vill inte läsa något från prompten "BEHÖVEr HJÄLP MED ATT KORRIGERA" någon som kan hjäla mig PLZ!
---------------------------------------------
import java.io.*;
import java.util.*;
public class calc{
public static void main (String args[]) throws Exception {
calc test=new calc();
test.init();
}
public void init() throws Exception {
BufferedReader input =
new BufferedReader(new InputStreamReader(System.in));
String line = "";
boolean calculate=true;
double total = 0;
String waste1;
String waste2;
System.out.println("Enter a number!");
while (calculate) {
waste1 = input.readLine();
double numberOne = Integer.parseInt(waste1);
String count;
count = input.readLine();
waste2 = input.readLine();
double numberTwo = Integer.parseInt(waste2);
if (count == "+")
total = numberOne + numberTwo;
if (count == "-")
total = numberOne - numberTwo;
if (count == "*")
total = numberOne * numberTwo;
if (count == "/")
total = numberOne / numberTwo;
if (count == "=") {
System.out.println(total);
calculate = false;
}
}
}
}
May 8, 2001
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Tur för dig att jag inte har något att göra just nu! Logiskt sett så är det inget större fel på koden men det finns ett stort fel:
Eftersom strängar inte är en primitiv datatyp (som t.ex int och float är) så kan man inte jämföra den med == utan man måste använda "myString.equals( "jonas" )" för att jämföra innehållet i dem.Om man använder sig av == så jämför man bara om de är samma object (vilket det iof kan vara eftersom de kan hamna i en pool, men det är kanske överkurs), inte om de "innehåller samma sak".
Koden kommer om ett litet tag!
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Lite tips:
* Använd alltid hela sökvägen i importsatsen, underlättar när man skriver större program
* Använd alltid {} när du skriver if-, else-satser osv trots att det inte behövs. Då är risken mindre att du eller någon annan gör fel när koden ska ändras.
* Ta hand om de "exceptions" som slängs på rätt ställe.
* Validera indata från användaren, de gör inte alltid rätt
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Calc {
public static void main (String args[]) {
new Calc().calculate();
}
private void calculate() {
try {
System.out.print( "Enter first number: " );
double total = getNumber();
while (true) {
System.out.print( "Enter operator: " );
String operator = getOperator();
if (operator.equals( "=" )) {
System.out.println( "Answer: " + total );
break;
}
System.out.print( "Enter number: " );
double number = getNumber();
if (operator.equals( "+" )) {
total += number;
}
if (operator.equals( "-" )) {
total -= number;
}
if (operator.equals( "*" )) {
total *= number;
}
if (operator.equals( "/" )) {
total /= number;
}
}
}
catch( IOException ioe ) {
System.out.println( ioe );
}
}
private double getNumber() throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
while( true ) {
try {
return Double.parseDouble( input.readLine().trim() );
}
catch( NumberFormatException nfe ) {
System.out.print( "Not a valid number, try again: " );
}
}
}
private String getOperator() throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
while( true ) {
String operator = input.readLine().trim();
if( operator.equals( "+" ) || operator.equals( "-" ) || operator.equals( "*" ) ||
operator.equals( "/" ) || operator.equals( "=" ) ) {
return operator;
}
else {
System.out.print( "Not a valid operator, try again: ");
}
}
}
}
Lycka till i fortsättningen!
_________________
Abit KR7A-Raid | XP 1700+ @ 1900+ | Taisol CGK760092 | 256 MB Samsung DDR |
2 x IBM 46GB (Raid 0) & Seagate 80GB | Leadtek GF3 Titanium 500 @245/560
[ Detta Inlägg ändrades av: jonaz den 2002-06-15 15:51 ]
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Såg just i ditt tidigare inlägg att det var en skoluppgift... Borde kanske inte ha löst den till dig i sin helhet men men!
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
May 8, 2001
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
On 2002-06-15 16:18, ulrika_mob wrote:
vet inte hur jag skall kunna tacka dig, otroligt shjyst. Programmering är inte riktigt mitt favo ämne, har haft det otroligt svårt att lära mig ojektorientering på 1 månad ungefär.
Har du någon email? icq? msn? som man kan kontakta dig på?
tack tack
Du har ett privat meddelande!
Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB
1 Guest(s)
![sp_Information](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_Information.png)