Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet megcsinálni ezt...

Hogyan lehet megcsinálni ezt a feladatot? Java

Figyelt kérdés

A Vector osztályban levő adatok reprezentációját cseréljük ki tömbről egész számokat (Integer) tartalmazó láncolt listára. A Vector show műveltét írjuk át olyanra, amely előállít (és visszaad) egy String-et (a korábbihoz hasonló formátumban). Használjunkjava.lang.StringBuilder-t a szöveg előállításához.


Kód:


class Calculator4{


public static void main(String args[]){

if(args.length<2){

System.out.println("Nincs eleg parameter.");

System.exit(0);

}

else{

//paraméterként két vektort adunk meg a vesszővel elválasztva

Vector1 vector = new Vector1(loadInputs(args[0]));

Vector1 vector2 = new Vector1(loadInputs(args[1]));

vector.addVector(vector2).show();

System.out.println("A ket vektor skalaris szorzata: "+vector.scalarProd(vector2));

}

}

public static int[] loadInputs(String args){

String[] array = args.split(",");

int[] a = new int[array.length];

for(int i=0;i<array.length;i++){

a[i]=Integer.parseInt(array[i]);

}

return a;

}

}


class Vector1{

private int[] array;

public Vector1(int[] initData){

this.array=initData;

}

public void show(){

String string = "[";

for(int i=0;i<array.length;i++){

if(i==array.length-1){

string+=array[i]+"]";

}

else{

string+=array[i]+",";

}

}

System.out.println(string);

}

public Vector1 addVector(Vector1 v){

int[] b = new int[array.length];

for(int i=0;i<array.length;i++){

b[i]=array[i]+v.array[i];

}

return new Vector1(b);

}

public int scalarProd(Vector1 v){

int ossz=0;

for(int i=0;i<array.length;i++){

ossz+=array[i]*v.array[i];

}

return ossz;

}


}


2015. szept. 23. 09:20
 1/1 anonim ***** válasza:

[link] (private final LinkedList<Integer> data)


[link] (itt az append metódus lesz most a lényeg)


public void show -> public String show. System.out helyett a StringBuilderbe hányod a szöveget, majd a végén return (toStringgel).


Figyelj oda, hogy

- Ne használj magyar szöveget a forráskódban

- Kerüld az "a", "b" és hasonló azonosítókat. Legyen mindennek közérthető, beszédes elnevezése. Az "array" sem jó elnevezés. Most például, ki kell cserélned az Array-t LinkedListre. Ha az azonosító marad a régi, a forráskód hazudni fog. Valószínűleg a "data" célravezetőbb lenne, illetve a parser metódusban talán a "segments" vagy valami hasonló.

- Kerüld a kommentek használatát. Az esetek 99%-ában (ezalól a JavaDoc többnyire kivétel) teljesen feleslegesek/zavaróak, és/vagy csak a kódminőség hiányosságait próbálja velük az ember ellensúlyozni; amit értelemszerűen nem szabad. Ökölszabály: a kódból legyen olvasható, hogy mi történik, a kommentnek akkor van helye, ha tömören el kell magyarázni, miért. A main-ben levő komment információja speciel nem is tartozik oda, mert a szóbanforgó problémával loadInputs foglalkozik.

- Brace-eknél, indentálásnál igyekezz követni a konvenciót (pl. az else lehetőleg ne kerüljön új sorba)


Bónusz:

- scalarProd -> dotProduct

- loadInputs beszédesebb volna parseVector névvel, Vector1 típusú visszatérési értékkel

2015. szept. 23. 15:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!