Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Java


sigisMoNd

Öne çıkan mesajlar

java ile ilgili sorunlar yasiyorum. universiteye vize gec ciktigi icin 3 hafta gec basladim. buraya geldigimde de hafiften almis basini yurumus dersler. sadece program yazma olsa bir sekilde yetisebilirim ancak onun disinda 4 dersim daha var ilgilenmem gereken.

bildiginiz java ile ilgili online kaynak var midir? ornegin simdi bir tane odevim var. yeni class yaratmam gerekiyor(komplex sayi)sonra da komplex sayilarla ilgili toplama ve cikarma islemi yapmam gerekiyor. class yaratma bolumunu dogru yaptim saniyorum ancak diger kisimda hata veriyor cmd den baktigimda.


import java.util.*;

public class Calculator {
public static void main (String args []) {
Scanner sc = new Scanner(System.in);

seklinde basliyor. class scanner olarak onu belirtmek istedim. birsey degistiriyor mu onu da bilmiyorum.

bu yeni yaratilan class Complex kismi


class Complex {
int real;
int img;

void add(Complex c) {
real += c.real;
img += c.img;
}

void sub(Complex c) {
real -= c.real;
img -= c.img;

}
void output() {
System.out.println(real + " " + img);
}
}




bu da yazmaya calistigim islem kismi


public class Calculator {
public static void main (String [] args) {
Complex complex = new Complex();
Scanner sc = new Scanner(System.in);

complex.real = 0;
complex.img = 0;
complex.output();
char operator = '?';

while (sc.hasNextInt()) {
if (operator == '+' || '-') {
complex.real = sc.NextInt();
complex.img = sc.NextInt();

if (operator == '+') {
complex.real += sc.NextInt();
complex.img += sc.NextInt();
}

if (operator == '-') {
complex.real -= sc.NextInt();
complex.img -= sc.NextInt();
}
System.out.println(complex.real + " " + complex.img);
}

}
}
}


soyle bakinca eksikligi ve yanlisligi hissedebiliyorum ancak cozemiyorum. kisaca aciklayayim bu arada ne yapmaya calistigimi. en basa operator gelicek (+ ya da -) sonrasinda yazilan sayilarin ilki real kisim ikincisi imaginer kisim olucak.

+ 1 2 5 6 7 8 ----> 1 ile 2 bir komplex sayiyi sonraki 5 ile 6 digerini olusturucak. bunlardan istedimiz kadar yazilabilecek. eger operator + ise ilk komplex sayiya sonra yazilanlar toplanacak. - ise ilk komplex sayidan cikartilicaklar. umarim anlatabilmisimdir. bu egitim bolumune de acilabilirdi biliyorum ama ayni zamanda baktigimda kolay anlayabilecegim ve yardimci olacak online kaynak ariyorum.

tesekkurler simdiden
Link to comment
Sosyal ağlarda paylaş

Yeni başlayan bir çok arkadaşım da "hangi kaynaktan başlamak lazım?" ve benzeri soruları soruyor ama kendim kitaplardan öğrenmediğim için cevaplayamıyorum. İlerde soran olursa tavsiye edebileyim diye ben de Java kitapları arıyorum hala.

Şahsen okuldan OOP temeli öğrendikten sonra bir iki örnek program yaparak öğrenmiştim Java'yı. Ama yazdığın programların doğruluğunu ve kalitesini kontrol edecek birinin olması şart. Yoksa kolay kolay kurtulamayacağın kötü alışkanlıklar edinebilirsin. O yüzden ödevleri kendi başına yapmaya çalışman çok önemli.

OOP öğrendikten sonra kitaba falan pek gerek olmuyor. Arada API'ye bakıyorsun o kadar.

Yazdığın kodda gözüme çarpan noktalar. Aşağıdaki koda bakarken bunları göz önünde bulundurmanı öneririm.

* Karmaşık sayılar için bir class yazman OOP için güzel bir örnek. Ama görebildiğim kadarıyla class C stili yazılmış. Public, private, package private nedir? Getter/Setter nedir ve neden kullanılır? Constructor nedir? Bunları iyi öğrenmeni tavsiye ederim.

* add/sub metodlarını yazış şeklin bana doğal gelmedi. Yanlış değil. Ama ben olsam iki sayıyı alıp sonucu yeni bir sayı olarak veren statik bir metodu tercih ederdim.

* Scanner class'ına System.in verdikten sonra yazdığın satırı okuması için ayrıca nextLine metodunu çağırman lazım. nextLine metodunun verdiği String'i başka bir Scanner ile okuyup tek tek tüm sayıları değerlendirmen lazım.

* Java'da (hatta tüm programlama dillerinde) değişken ve class isimleri için mümkün olduğunca kısaltma kullanmıyoruz. Kullananı uyarıyoruz. (sc yerine Scanner, Complex yerine ComplexNumber gibi)

ComplexNumber


public class ComplexNumber {

private int real;
private int img;

public ComplexNumber(int real, int img) {
this.real = real;
this.img = img;
}

public static ComplexNumber add(ComplexNumber c1, ComplexNumber c2) {
return new ComplexNumber(c1.real + c2.real, c1.img + c2.img);
}

public static ComplexNumber sub(ComplexNumber c1, ComplexNumber c2) {
return new ComplexNumber(c1.real - c2.real, c1.img - c2.img);
}

@Override
public String toString() {
return real + " " + img;
}

}



Calculator


import java.util.Scanner;

public class Calculator {

public static void main (String [] args) {
Scanner lineScanner = new Scanner(System.in);
Scanner wordScanner = new Scanner(lineScanner.nextLine());
String operator = wordScanner.next();
ComplexNumber resultNumber = readNextComplexNumber(wordScanner);

while (wordScanner.hasNextInt()) {
ComplexNumber readNumber = readNextComplexNumber(wordScanner);
if (operator.equals("+")) {
resultNumber = ComplexNumber.add(resultNumber, readNumber);
}
else if (operator.equals("-")) {
resultNumber = ComplexNumber.sub(resultNumber, readNumber);
}
}

System.out.println(resultNumber);
}

private static ComplexNumber readNextComplexNumber(Scanner wordScanner) {
int real = wordScanner.nextInt();
int img = wordScanner.nextInt();
return new ComplexNumber(real, img);
}
}



Dikkat etmen gereken nokta: Bu yukardaki kod gireceğin satırın doğru olduğunu varsayıyor. Yani + ve - ile başlayacak ve sonra da en az 2 tane olmak üzere çift sayıda integer ile devam edecek. Aksini göz önünde bulundurman gerekiyorsa exception'ları yakalaman lazım.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...