Jompan Postad 6 april, 2017 Share Postad 6 april, 2017 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 More sharing options...
Cecilia Postad 7 april, 2017 Share Postad 7 april, 2017 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 More sharing options...
.M Postad 7 april, 2017 Share Postad 7 april, 2017 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 More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.