Vinnaren i pepparkakshustävlingen!
2018-11-14, 07:54
  #1
Medlem
Tjena! Som rubriken lyder hur gör jag för att starta en array på mitten och loppar ändå igenom hela arrayen? Jag förstår att man ska använda sig av en forloop men vet inte vad jag ska göra i den för att få det att funka..

Tillexempel

En int array på storlek 5. Om jag vill börja på index [3] och loopa igenom hela 3--> 4-->5--->1-->2

Hur går det till? Har kommit såhär långt, vet dock ej om det är rätt heller men jag försöker.

Kod:
int [] students=new int [5];

for(
int start=2;start<students.length;start++){
System.out.println(students[i])


nu får jag ut 3,4,5 men nu vill jag att den ska börja om på 1,2 men ingen som helst aning hur man kan göra det snyggt
__________________
Senast redigerad av Douknowme 2018-11-14 kl. 08:08.
Citera
2018-11-14, 08:16
  #2
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av Douknowme
Tjena! Som rubriken lyder hur gör jag för att starta en array på mitten och loppar ändå igenom hela arrayen? Jag förstår att man ska använda sig av en forloop men vet inte vad jag ska göra i den för att få det att funka..

Tillexempel

En int array på storlek 5. Om jag vill börja på index [3] och loopa igenom hela 3--> 4-->5--->1-->2

Hur går det till? Har kommit såhär långt, vet dock ej om det är rätt heller men jag försöker.

Kod:
int [] students=new int [5];

for(
int start=2;start<students.length;start++){
System.out.println(students[i])


nu får jag ut 3,4,5 men nu vill jag att den ska börja om på 1,2 men ingen som helst aning hur man kan göra det snyggt

Du kan ju alltid göra en loop som gör en ny array först, med elementen i den ordning du vill ha. Eller så gör du en till loop efter den första, som börjar på index 0 och slutar på index 2.
Citera
2018-11-14, 08:30
  #3
Medlem
Använd modulo. Syntaxen i Java får du hitta själv, men för ett i mellan säg 2 och 7, om du tar i modulo 5 får du 2, 3, 4, 0, 1, 2.
Citera
2018-11-14, 11:22
  #4
Medlem
Citat:
Ursprungligen postat av luxnest
Använd modulo. Syntaxen i Java får du hitta själv, men för ett i mellan säg 2 och 7, om du tar i modulo 5 får du 2, 3, 4, 0, 1, 2.

Ok får testa mig fram! tack
Citera
2018-11-14, 11:51
  #5
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Douknowme
Ok får testa mig fram! tack
Använd % som ”divisionstecken”, typ.
Citera
2018-11-14, 11:55
  #6
Moderator
Neksnors avatar
Ungefär så här:
Forloop 0 -> arraylängd, ex 5
Plussa på startvärde, ex 2
Gör något med (det påplussade startvärdet) % arraylängd
Citera
2018-11-14, 12:04
  #7
Medlem
Citat:
Ursprungligen postat av Neksnor
Ungefär så här:
Forloop 0 -> arraylängd, ex 5
Plussa på startvärde, ex 2
Gör något med (det påplussade startvärdet) % arraylängd

Om jag förstått dig rätt menar du såhär då?

Kod:
int[] nummer={1,2,3,4,5};

for(
int i=0;i<nummer.length;i++){
System.out.println(i+2%nummer[i]);

Tillexempel?

Förstår vad % gör nu men kanske inte riktigt greppat i loop-sammanhang

Men jag fick det att funka men då använde jag mig av två loopar .. Går det göra med bara en loop?

Kod:
int [] nummer={1,2,3,4,5};
        
        for(
int y=2;y<nummer.length;y++) {
            
System.out.println(nummer[y]);
        }
        
        for(
int i=2;i<nummer.length;i++) {
          
System.out.println(nummer[i]%3);    
        } 
Citera
2018-11-14, 13:05
  #8
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Douknowme
Om jag förstått dig rätt menar du såhär då?

Kod:
int[] nummer={1,2,3,4,5};

for(
int i=0;i<nummer.length;i++){
System.out.println(i+2%nummer[i]);

Tillexempel?

...
Ingen datortillgång just nu, men ändra

System.out.println(i+2%nummer[i]);

till

System.out.println(nummer[(i+2)%nummer.length]);

?
Citera
2018-11-14, 13:23
  #9
Medlem
Citat:
Ursprungligen postat av Neksnor
Ingen datortillgång just nu, men ändra

System.out.println(i+2%nummer[i]);

till

System.out.println(nummer[(i+2)%nummer.length]);

?

Ja det funkade bra!

Försöker få in det i detta sammanhang..
Kod:
public class Trääääne {
    public static 
void main(String []args) {
        
Scanner input=new Scanner (System.in);
        
Scanner inputs=new Scanner (System.in);
        
        
String students[]=new String [5];
        
        
System.out.println("Lägg till studenter i listan");
        for(
int i=0;i<students.length;i++) {
            
students[i]=inputs.nextLine();
        }
        
        
int minutes[]=new int [5];
        
        
System.out.println("lägg till antal minuter för varje student..");
        for(
int i=0;i<minutes.length;i++) {
        
minutes[i]=input.nextInt();    
        }
    
        
        for(
int i=0;i<students.length;i++) {
            
System.out.println(students[i]+" behöver - "+minutes[i]+" minuter för att bli klar..");        
        }        
        
    }    
    
     private static 
int reviewDrawing(int startIndexint [] students) {
              
         
//Denhär metoden har två inargument där man ska fylla i med vars
         //läraren ska börja samla in ritningarna. 
         //och [] students är till för att koppla till längden på arrayen
     
}


HTML-kod:
private static int reviewDrawing(int startIndex, int [] students) 

Den jag sitter och krigar med. Försökt i flera timmar hur jag kan lösa det.
Allt går ut på att man fyller i 5st studenter och sen 5st olika minutrar och det tar 1 minut för läraren att ta in ritningen så att tex

Student 1 har 3 minuter
Student 2 har 4 minuter
Student 3 har 0 minuter
Student 4 har 1 minuter
Student 5 har 3 minuter

Alltså börjar jag med student 3 för den studenten behöver ingen extra minut(det tar en minut för läraren att "reviewa") sen går man till nästa för den studenten behövde en extra minut och då tar det ytterligare en minut där för att "reviewa" å sen går man vidare till student 5 som behöver 3 extra minuter osv till alla 5 har plockat ihop..

Vet inte riktigt lösningen ännu men tror jag ska använda mig av en sån där modul
Citera
2018-11-14, 13:27
  #10
Medlem
Citat:
Ursprungligen postat av Douknowme
Ja det funkade bra!

Försöker få in det i detta sammanhang..
Kod:
public class Trääääne {
    public static 
void main(String []args) {
        
Scanner input=new Scanner (System.in);
        
Scanner inputs=new Scanner (System.in);
        
        
String students[]=new String [5];
        
        
System.out.println("Lägg till studenter i listan");
        for(
int i=0;i<students.length;i++) {
            
students[i]=inputs.nextLine();
        }
        
        
int minutes[]=new int [5];
        
        
System.out.println("lägg till antal minuter för varje student..");
        for(
int i=0;i<minutes.length;i++) {
        
minutes[i]=input.nextInt();    
        }
    
        
        for(
int i=0;i<students.length;i++) {
            
System.out.println(students[i]+" behöver - "+minutes[i]+" minuter för att bli klar..");        
        }        
        
    }    
    
     private static 
int reviewDrawing(int startIndexint [] students) {
              
         
//Denhär metoden har två inargument där man ska fylla i med vars
         //läraren ska börja samla in ritningarna. 
         //och [] students är till för att koppla till längden på arrayen
     
}


HTML-kod:
private static int reviewDrawing(int startIndex, int [] students) 

Den jag sitter och krigar med. Försökt i flera timmar hur jag kan lösa det.
Allt går ut på att man fyller i 5st studenter och sen 5st olika minutrar och det tar 1 minut för läraren att ta in ritningen så att tex

Student 1 har 3 minuter
Student 2 har 4 minuter
Student 3 har 0 minuter
Student 4 har 1 minuter
Student 5 har 3 minuter

Alltså börjar jag med student 3 för den studenten behöver ingen extra minut(det tar en minut för läraren att "reviewa") sen går man till nästa för den studenten behövde en extra minut och då tar det ytterligare en minut där för att "reviewa" å sen går man vidare till student 5 som behöver 3 extra minuter osv till alla 5 har plockat ihop..

Vet inte riktigt lösningen ännu men tror jag ska använda mig av en sån där modul

Eller ja OM det är någon i listan som inte behöver någon extra minut så börjar man därifrån! Men vet fan inte hur man gör de heller tyvärr men jag håller på att klura på det!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback