(Java) hur gör man för att System.out.print printar ut hela array som jag har skrivit med Scanner?

Trädvy Permalänk
Medlem
Registrerad
Apr 2016

(Java) hur gör man för att System.out.print printar ut hela array som jag har skrivit med Scanner?

Hej
Först jag vill att säga ursäkta med språket(Jag är invandrare)

Hej jag går på gymnasie årskurs3 nu och läser programmering 2 själv. Jag läste array förra år och har glömt hur man läser hela array från console

import java.util.*; public class InsertionSort { public static void main (String[] args){ Scanner sc = new Scanner(System.in); System.out.print("Skriv arrays längd"); System.out.flush(); int l = sc.nextInt(); int []Index = new int [l+1];//Det ska adderas med 1 eftersom arrays index börjas från 0 int temp; System.out.print("Skriv tal som ska finnas i array");System.out.flush(); for(int i =0; i<Index.length; i++){ int n = sc.nextInt(); n=Index[i]; } }

Det är min kod .. Jag vill att göra att System.out.print ska visa hela array .. Jag menar att om jag skriver 3 som arrays index och tal 2,4,6,8 ska finnas i array, System.out.print ska visa alla dessa tal i en rad igen. Jag har provat att skriva System.out.print(n) men resultat var inte som jag har tänkt.. (Scanner läser talen från console men System.out.print visar ingenting.)
Jag har jobbat med det igår natten men jag kunde inte lösa det. Har ni någon bra förslag? InsertionSort jag kan göra själv

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Maj 2004

Borde det inte vara Index[i] = n, inte n = Index[i]?

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av Tazavoo:

Borde det inte vara Index[i] = n, inte n = Index[i]?

Ah.. Jag har aldrig tänkt på det.. Spelar placeringen någon roll?

Trädvy Permalänk
Medlem
Plats
Gävle
Registrerad
Feb 2009
Skrivet av ProgrammeringElev:

Ah.. Jag har aldrig tänkt på det.. Spelar placeringen någon roll?

Insistera n före for loopen

Thanks for the party, the house, the girls, the press, and..
Oh yeah, doing my laundry

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av jesusbarnet:

Insistera n före for loopen

Menar ni så?

int n = 0; for(int i =0; i<Index.length; i++){ n = sc.nextInt(); n=Index[i]; } System.out.print(n);

Jag provade

int n = 0; for(int i =0; i<Index.length; i++){ n = sc.nextInt(); Index[i]=n; } System.out.print(n);

Så men System visar bara sista talet , inte alla

Trädvy Permalänk
Medlem
Registrerad
Sep 2014
Skrivet av ProgrammeringElev:

Ah.. Jag har aldrig tänkt på det.. Spelar placeringen någon roll?

Placering spelar stor roll vid tilldelning. Just nu säger du att "n" ska ha samma värdet som Index[i], du vill göra är tvärt om.
Du läser in ett tal till n, och lägger det på platsen Index[i].

int n = sc.nextInt(); Index[i] = n;

Eller rent av:

Index[i] = sc.nextInt();

För att printa en array kan du göra som du sagt tidigare.

System.out.println(Arrays.toString(Index));

Edit: gick lite snabbt där, korrigerar fel.

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av jesusbarnet:

så här skulle jag gjort:
System.out.print("Skriv tal som ska finnas i array")
for(int i =0; i<Index.length; i++){
System.out.print(Index[i])
}

Men om man gör så, jag får ingen chans att skriva tal eftersom programmet slutas direkt..

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av noyce:

Placering spelar stor roll vid tilldelning. Just nu säger du att "n" ska ha samma värdet som Index[i], du vill göra är tvärt om.
Du läser in ett tal till n, och lägger det på platsen Index[i].

int n = sc.nextInt(); Index[i] = n;

Eller rent av:

Index[i] = sc.nextInt();

För att printa en array kan du göra som du sagt tidigare,

System.out.println(Index);

Aha tack! Jag visste inte om placeringens roll!
Jag tror att jag är nästan klart men utskriften jag får inte som jag har tänkt Den kod som ni har skrivit visar
[I@28d93b30
Vad är det?

Jag har provat

for(int i = 0; i<Index.length; i++) Index[i]=sc.nextInt(); for(int i: Index) System.out.print(Index); }

Att skriva så men jag får samma utskrift

Trädvy Permalänk
Medlem
Plats
Gävle
Registrerad
Feb 2009
Skrivet av ProgrammeringElev:

Men om man gör så, jag får ingen chans att skriva tal eftersom programmet slutas direkt..

läste inte så noga vad du ville programmet skulle göra sorry

Thanks for the party, the house, the girls, the press, and..
Oh yeah, doing my laundry

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av jesusbarnet:

läste inte så noga vad du ville programmet skulle göra sorry

Det är OK

Trädvy Permalänk
Medlem
Registrerad
Sep 2014
Skrivet av ProgrammeringElev:

Aha tack! Jag visste inte om placeringens roll!
Jag tror att jag är nästan klart men utskriften jag får inte som jag har tänkt Den kod som ni har skrivit visar
[I@28d93b30
Vad är det?

Jag har provat

for(int i = 0; i<Index.length; i++) Index[i]=sc.nextInt(); for(int i: Index) System.out.print(Index); }

Att skriva så men jag får samma utskrift

Gick lite snabbt i mitt förra inlägg.

System.out.println(Arrays.toString(Index));

Gör om hela arrayen till en string och printar den direkt, någit i stil med [1,2,3,4,5], alltså behöver du inte loopa igenom arrayen.

Trädvy Permalänk
Medlem
Registrerad
Sep 2014

Det kan även vara bra att skilja på de olika forlooparna:

for (int i : Index) { System.out.print(i); } for (int n = 0; n < Index.length; n++) { System.out.print(Index[n]); }

Dessa ger samma resultat, men skrivs på lite olika sätt. Den första hämtar ett värde direkt ut arrayen och lägger det i "int i". Alltså kan du printa det värdet direkt eftersom du redan hämtat det från arrayen.
Den andra loopen fungerar som en räknare som börjar vid 0 och slutar när arrayen längd uppnås, eftersom vi inte ännu har hämtat själva värdet ur arrayen så använder vi den nuvarande siffran n för att hämta talet som ligger på plats n i arrayen.

Hoppas det klargjorde något.

P.S Ta även en funderare kring om denna rad verkligen gör det du vill att den ska göra. Om du säger att arrayen ska ha 4 platser, hur många platser kommer den få om du lägger på + 1?

int[] Index = new int[l + 1];//Det ska adderas med 1 eftersom arrays index börjas från 0

Trädvy Permalänk
Medlem
Plats
Gävle
Registrerad
Feb 2009

alla sätt jag kommer på just nu

for (int i=0; i<Index.length; i++)
{
System.out.print(Index[i]+" ");
}

for (int i: Index)
{
System.out.print(i+" ");
}

System.out.print(Arrays.toString(Index));

Thanks for the party, the house, the girls, the press, and..
Oh yeah, doing my laundry

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av jesusbarnet:

alla sätt jag kommer på just nu

for (int i=0; i<Index.length; i++)
{
System.out.print(Index[i]+" ");
}

for (int i: Index)
{
System.out.print(i+" ");
}

System.out.print(Arrays.toString(Index));

Tack så mycket nu det fungerar bra!!

Trädvy Permalänk
Medlem
Registrerad
Apr 2016
Skrivet av noyce:

Det kan även vara bra att skilja på de olika forlooparna:

for (int i : Index) { System.out.print(i); } for (int n = 0; n < Index.length; n++) { System.out.print(Index[n]); }

Dessa ger samma resultat, men skrivs på lite olika sätt. Den första hämtar ett värde direkt ut arrayen och lägger det i "int i". Alltså kan du printa det värdet direkt eftersom du redan hämtat det från arrayen.
Den andra loopen fungerar som en räknare som börjar vid 0 och slutar när arrayen längd uppnås, eftersom vi inte ännu har hämtat själva värdet ur arrayen så använder vi den nuvarande siffran n för att hämta talet som ligger på plats n i arrayen.

Hoppas det klargjorde något.

P.S Ta även en funderare kring om denna rad verkligen gör det du vill att den ska göra. Om du säger att arrayen ska ha 4 platser, hur många platser kommer den få om du lägger på + 1?

int[] Index = new int[l + 1];//Det ska adderas med 1 eftersom arrays index börjas från 0

Tack så mycket nu det fungerar bra!!