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

Räkna antal delar av en talserie

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?

Dela detta inlägg


Länk till inlägg
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?

Dela detta inlägg


Länk till inlägg
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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...