Just nu i M3-nätverket
Gå till innehåll

Räkna antal delar av en talserie


Jompan

Rekommendera Poster

Jag väljer hur många tal jag ska slumpa till en talserie mellan 1 och 999. Efter att jag skrivit ut den och sorterat den i fallande serie ska jag plocka ut vilka tal i serien som är jämna. Det funkar, men sen fastnar jag på hur jag ska kunna räkna ut antalet jämna tal. Den kod jag skrivit där skriver inte ut något alls!

import java.util.Scanner;

public class Problem {
	public static void main(String[] args) {

		// Deklarera variabler som behövs
		int antalNr, sum = 0;
		
		// Mata in antal som ska slumpas
		Scanner matain = new Scanner(System.in);
		System.out.print("Hur många slumptal i intervallet 0-999 önskas?");
		antalNr = matain.nextInt();
		matain.nextLine(); // Rensa inmatningsbufferten

		int[] array = new int[antalNr];
		int bredd = array.length;
		int max = 0;
		int rad = 0;

		// Slumpning av talen
		for (int i = 0; i < bredd; i++) {
			array[i] = (int) (Math.random() * 1000) + 1;
		}
		System.out.println();
		System.out.println("Här är de slumpade talen.");

		// Skriv ut osorterat
		for (int i = 0; i < antalNr; i++) {
			System.out.print(array[i] + " ");
		}
		System.out.println();

		// Sorterar talserien
		for (int i = 0; i < bredd - 1; i++) {
			max = i;
			for (int k = i + 1; k < bredd; k++) {
				if (array[k] > array[max]) {
					max = k;
				}
			}
			// Byter plats på två platser i arrayen
			rad = array[i];
			array[i] = array[max];
			array[max] = rad;
		}
		System.out.println();
		System.out.println("Här är de slumpade talen ordnade.");

		// Skriv ut sorterat
		for (int i = 0; i < bredd; i++) {
			System.out.print(array[i] + " ");
		}
		System.out.println();
		System.out.println();

		// Summera talkedjan (för senare koll av resultatet)
		for (int i = 0; i < array.length; i++) {
			sum = sum + array[i];
		}

		System.out.println("Summan är " + sum + " och de jämna talen är:");

		int[] evenArray = new int[antalNr];
		int evenCounter = 0;
		int[] antalEven = new int[evenCounter];

		for (int i = 0; i < array.length; i++) {
			if (array[i] % 2 == 0) {
				evenArray[evenCounter] = array[i];
				System.out.print(+evenArray[evenCounter] + ", ");
				evenCounter++;
			}

			// int length = antalEven.length;

			for (int a = 0; a < antalEven.length; a++) {
				System.out.print("\nAntal " + evenArray[a]);
			}
		}

	}
}

Är det någon som ser var jag har trasslat till det?

Länk till kommentar
Dela på andra webbplatser

        int evenCounter = 0;
        int[] antalEven = new int[evenCounter];

...

for (int a = 0; a < antalEven.length; a++) {

Vad är värdet på antalEven.length?

Behöver du antalEven.length över huvud taget?

Länk till kommentar
Dela på andra webbplatser

 

        int evenCounter = 0;
        int[] antalEven = new int[evenCounter];

...

for (int a = 0; a < antalEven.length; a++) {
Vad är värdet på antalEven.length?

Behöver du antalEven.length över huvud taget?

 

Eftersom antalEven initialiseras med evenCounter som raden innan sätts till 0 så kommer antalEven.length vara 0. Så du har rätt, den behövs inte. Utan det räcker med att skriva ut eventCounter som inkrementeras (är det ett ord?) i loopen under.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...