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

Placera i två arrayer

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]);
   }
   
   
  }
 }
}

Dela detta inlägg


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

Dela detta inlägg


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

Dela detta inlägg


Länk till inlägg
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++;
			}
		}
	}
}

Dela detta inlägg


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

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

Dela detta inlägg


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

Dela detta inlägg


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

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? 

Dela detta inlägg


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

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? 

Dela detta inlägg


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

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