Kezdőoldal » Számítástechnika » Programozás » Mit rontottam el? (java)

Mit rontottam el? (java)

Figyelt kérdés

Ez a feladat:


Create a method that removes the middle (or the middle two) values of an array. This method removes a single element if the initial list has a odd length and two elements if the length is even. The method should return a new array.


(input: 3, 2, 6, 1, 0)

[3, 2, 1, 0]

(input: 1, 2, 3, 4)

[1, 4]



public class Week6Ex7 {

public void run(){

int[] numbs1 = {3, 2, 6, 1, 0};

int[] numbs2 = {1, 2, 3, 4};

int[] result = deleteMiddle(numbs1);


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

System.out.println(result[i]);

}


}

public int[] deleteMiddle(int[] theArray){

int sum = 0;

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

sum += theArray[i];

}


int[] tempArray;

if (sum % 2 == 0){

tempArray = new int[theArray.length - 2];

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

int p = 0;

if (i != (theArray.length/2) && i!= (theArray.length/2) + 1){

tempArray[p] = theArray[i];

}

p++;

}


} else{

tempArray = new int[theArray.length - 1];

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

int p = 0;

if (i != (theArray.length/2) + 1) {

tempArray[p] = theArray[i];

}

p++;

}


}



return tempArray;

}

public static void main(String[] args){

new Week6Ex7().run();

}

}



2017. okt. 9. 09:43
1 2
 1/13 anonim ***** válasza:
100%
A feladat szerint a tömb méretét kell figyelni, nem a benne szereplő értékek összegét.
2017. okt. 9. 09:45
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
Köszönöm, megpróbálom úgy :D
2017. okt. 9. 09:47
 3/13 A kérdező kommentje:
a sum-ot az If statementben kicseréltem theArray.length-re, így már megfelelő mennyiségi output van, de csak nullák kapok... Pontosabban 4 db nullát.
2017. okt. 9. 09:49
 4/13 anonim ***** válasza:

Mi ez a szummázás?

A tömb hossza a lényeg, nem az elemek összege...

2017. okt. 9. 09:54
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:

public class Week6Ex7 {

public void run(){

int[] numbs1 = {3, 2, 6, 1, 0};

int[] numbs2 = {1, 2, 3, 4};

int[] result = deleteMiddle(numbs1);


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

System.out.println(result[i]);

}


}

public int[] deleteMiddle(int[] theArray){

int[] tempArray;

if (theArray.length % 2 == 0){

tempArray = new int[theArray.length - 2];

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

int p = 0;

if (i != (theArray.length/2) && i!= (theArray.length/2) + 1){

tempArray[p] = theArray[i];

}

p++;

}


} else{

tempArray = new int[theArray.length - 1];

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

int p = 0;

if (i != (theArray.length/2) + 1) {

tempArray[p] = theArray[i];

}

p++;

}


}



return tempArray;

}

public static void main(String[] args){

new Week6Ex7().run();

}

}



Itt van a "kijavított" verzió. Ha numbs1-el csinálom, 4 db nullát kapok. Ha numbs2-vel akkor meg ezt kapom: 2,0;

2017. okt. 9. 09:59
 6/13 anonim ***** válasza:
42%
Mondjuk tátott szàjjal gyakorira posztolás helyett akát debuggolhatnád is.
2017. okt. 9. 10:03
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:

De jó, amikor még csak kb 2 hete programozól és úgy segítenek, hogy "mért nem tudod megcsinálni magadtól"


Kb 40 perc baszakodás után tettem ki a kérdést ... nem az első elakadásnál.

2017. okt. 9. 10:10
 8/13 Koplárovics Béci ***** válasza:
A p=0-kat nem ártana a for cikluson kívüre tenni, mert így hiába növeled az értékét, ha aztán mindig lenullázod, és mindig a 0. elemnek adsz értéket. És az első résznél azért kapsz 0-kat, mert utoljára a 0. elembe is 0-t írsz.
2017. okt. 9. 10:49
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:

Ez lett a végleges kód amin már jól átment minden.


public class Week6Ex7 {

public void run(){

int[] numbs1 = {3, 2, 6, 1, 0};

int[] numbs2 = {1, 2, 3, 4};

int[] result = deleteMiddle(numbs2);


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

System.out.println(result[i]);

}


}

public int[] deleteMiddle(int[] theArray){

int[] tempArray;

int p = 0;

if (theArray.length % 2 == 0){

tempArray = new int[theArray.length - 2];

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

if (i != (theArray.length/2)){

if (i!= (theArray.length/2) - 1){

tempArray[p] = theArray[i];

p++;

}

}

}


} else{

tempArray = new int[theArray.length - 1];

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

if (i != theArray.length/2) {

tempArray[p] = theArray[i];

p++;

}

}


}



return tempArray;

}

public static void main(String[] args){

new Week6Ex7().run();

}

}

2017. okt. 9. 11:04
 10/13 anonim ***** válasza:

Még lehetne csinosítani, de ez kicsit rövidebb talán.


var theArray = new int[] { 1, 3, 4, 9, 7, 8 };

int middleIndex = theArray.Length / 2;

var tempList = new List<int>();


for (int i = 0; i < theArray.Length; i++)

{

if (i == middleIndex ||

(theArray.Length % 2 == 0 && i == middleIndex - 1))

{

continue;

}

tempList.Add(theArray[i]);

}


var result = tempList.ToArray();

2017. okt. 9. 14:13
Hasznos számodra ez a válasz?
1 2

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!