Just nu i M3-nätverket
Jump to content

Räkna antal delar av en talserie


Jompan
 Share

Recommended Posts

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?

Link to comment
Share on other sites

        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?

Link to comment
Share on other sites

 

        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.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



×
×
  • Create New...