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

Placera i två arrayer


Serenity28

Rekommendera Poster

Hej!

 

Jag förstår inte varför de slumpvalda talen inte placeras i arrayerna för jämna och ojämna tal. Och slumptalen skrivs inte ut, trots att jag vet att den första delen i koden om att slumpa fram tal fungerar. Den delen slutar att fungera när jag tar bort "{ " efter den första for-loopen.

 

Vet någon vad som behöver rättas till?

 

här e koden:

import java.util.Scanner;
 
public class Siffror {
 
public static void main(String[] args) {
 
//Scanner in = new Scanner(System.in);
int evenCounter = 0;
int oddCounter = 0;
Scanner input = new Scanner(System.in);
System.out.println("Hur många slumptal i intervallet 0 - 999 önskas?");
int antal = input.nextInt();
 
System.out.println("Här är de slumpade talen:");
 
int[] arrayen = new int[antal];
for (int i = 0; i < arrayen.length; i++) {
   arrayen = (int) (Math.random() * 999 + 1);
           
}
 
int[] evenArray = new int[evenCounter];
int[] oddArray = new int[oddCounter];
evenCounter = 0;
oddCounter = 0;
 
for ( i =0; i < arrayen.length ; i++){
   if ((arrayen % 2) == 0) 
   {
    evenArray[evenCounter] = arrayen;
        evenCounter++;
        System.out.print("jämna tal " +evenArray [evenCounter]);
       }
   else
 {
        oddArray[oddCounter] = arrayen;
        oddCounter++;
        System.out.print("Ojämna tal " + oddArray[oddCounter]);
   }
   
   
  }
 }
}
Länk till kommentar
Dela på andra webbplatser

Nu kommer jag inte ihåg Java så bra längre, men blir inte detta konstigt?

int evenCounter = 0;
int oddCounter = 0;
...
int[] evenArray = new int[evenCounter];
int[] oddArray = new int[oddCounter];
Länk till kommentar
Dela på andra webbplatser

Serenity28

Det verkar som att arrayerna som ska hålla jämna och ojämna tal ej har några värden. vad gör jag för fel?

Länk till kommentar
Dela på andra webbplatser

Först definierar du evenCounter och oddCounter och sätter dessa till 0. Sen skapar du evenArray och oddArray och sätter längden på dessa till 0, eftersom du satt dina counters till 0.

 

Så börja med att när du definierar dina counters att sätta dessa till någon rimlig storlek och se om det hjälper.

Länk till kommentar
Dela på andra webbplatser

Jag kollade en gång till på ditt program. Det finns flera småproblem. Jag har satt ihop ett exempel som jag tror fungerar som du vill. Du borde kunna se det här.

http://ideone.com/JH0Rfk

 

Utifall att det inte fungerar, så bifogar jag koden här.

/* package whatever; // don't place package name! */

import java.util.Scanner;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		Scanner input = new Scanner(System.in);
		System.out.println("Hur många slumptal önskas?");
		int amount = input.nextInt();
		
		int[] myArray = new int[amount];
		for(int i = 0; i < myArray.length; i++) {
			myArray[i] = (int)(Math.random() * 999 + 1);
		}
		
		int[] evenArray = new int[amount];
		int[] oddArray = new int[amount];
		int evenCounter = 0;
		int oddCounter = 0;
		
		for(int i = 0; i < myArray.length; i++) {
			if(myArray[i] % 2 == 0) {
				evenArray[evenCounter] = myArray[i];
				System.out.println("jämna " + evenArray[evenCounter]);
				evenCounter++;
			} else {
				oddArray[oddCounter] = myArray[i];
				System.out.println("ojämna " + oddArray[oddCounter]);
				oddCounter++;
			}
		}
	}
}
Länk till kommentar
Dela på andra webbplatser

Serenity28

Tusen tack för din hjälp!

 

Jag själv lyckades få programmet att placera jämna och ojämna i två olika arrayer. men jag kan inte använda arrayerna utanför if- satsen. och förstår inte hur jag ska göra. samt att jag behöver skriva ut antalet jämna och ojämna tal och alla värden. Allt blir konstigt eftersom jag ej kan skriva ut de jämna talen utanför if-satsen...

Länk till kommentar
Dela på andra webbplatser

Ett bekymmer med arrayer är att du måste ange hur många element du vill ha innan du kan böra använda den. I det här fallet så vet du samanlagt hur många slumptal du ska skapa, men inte hur många udda och jämna tal det blir.

 

Så du kanske ska ersätta arrayerna med något typ av List. Dom har ingen fast storlek och kan växa i samband med att du hittar udda och jämna tal.

Länk till kommentar
Dela på andra webbplatser

Serenity28

Vi får inte använda oss av arraylist. Kan man inte ha någon räknare som räknar de jämna och ojämna talen , och iså fall hur gör jag det? 

Länk till kommentar
Dela på andra webbplatser

Serenity28

Jag såg att om man använder sig av evenCounter utanför for-loopen anger den hur många jämna nr det finns. Men så som uppgiften ska se ut så blir allt krångligt. Det ska stå  System.out.print ("dessa" + evenCounter + "tal är i jämna") och följt av de jämna talen.

Skriver jag detta innan for-loopen har ju evenCounter inget värde. Och anger jag arrayen utanför for-loopen har den inget värde.

 

En annan fråga: varför kan jag tex inte skriva System.out.print(); före else satsen, varför får else ett rött understreck? 

Länk till kommentar
Dela på andra webbplatser

Det enklaste sättet att lösa ditt problem på är att först göra en loop på antalet som användaren matat in, i loopen efter du plockat fram ditt slumptal och sparat det i en array, göra en if som kollar om det är udda eller jämt. Öka en räknare beroende på resultatet.

 

Efter loopen, initiera dina udda och jämna-arrayer med storleken enligt räknarna.

 

Gör en till loop där du kopierar talen från den första arrayen till de udda/jämna arrayerna.

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...