multiplikationstabellen i kvadratform
min kod ser hittills ut såhär:
public class Multi
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("skriv in önskad storlek: ");
int s = input.nextInt(); //här lagras det du skriver in.
System.out.print (" x | "); //skriver ut "x" i början va tabellen
int c1 = 1;
for (int r1 = 0; c1 <= s; c1++)
{
System.out.printf ("%3d | ", c1);
} //loop som skriver ut den första raden
System.out.println (); //hoppa en rad
int rad = 0;
for (int linje = 0; rad <= s; rad++)
{
System.out.print ("----");
} //loop som skriver ut skiljeraden
System.out.println (); //hoppa en rad
int r = 1;
int c = 1;
for (int i = 0; i <= s; r++)
{
for (int p = 0; p <= s; c++)
{
System.out.printf ("%3d | ", r + c * c1);
}
System.out.println ();
}
// här borde multiplikationstabellen skrivas ut
}
}
när programmet körs slutar den aldrig bara skrivs ut siffror efter siffros hinner inte ens se vad som händer... hjälp!
Det ser ut som om du kopierar kod från lite varstans utan att ha koll på vad som sker. Här till exempel:
for (int i = 0; i <= s; r++)
Variabel i ska börja med noll och öka tills i är större än s. Så långt allt väl men sedan ökar du på r med ett och struntar i värdet på i.
Jag rekommenderar dig att läsa på ordentligt om for-loopar. Det är grundläggande kunskap som behövs i alla programmeringsspråk. Om du inte förstår hur en vanlig for-loop fungerar kommer du att råka ut för just det som du här har problem med.
PeterÅ skrev :Det ser ut som om du kopierar kod från lite varstans utan att ha koll på vad som sker. Här till exempel:
for (int i = 0; i <= s; r++)
Variabel i ska börja med noll och öka tills i är större än s. Så långt allt väl men sedan ökar du på r med ett och struntar i värdet på i.
Jag rekommenderar dig att läsa på ordentligt om for-loopar. Det är grundläggande kunskap som behövs i alla programmeringsspråk. Om du inte förstår hur en vanlig for-loop fungerar kommer du att råka ut för just det som du här har problem med.
när jag ska göra for-loopar fårj ag till det men när jag ska ha en nästlad loop så dunkar det inte. läroboken är inte till nån hjälp alls :S
Vidhåller att det verkar lite si och så med både din programmering och nu också din stavning. Programmering kan inte utföras på ett ungefär. Om inte läroboken ger svar kan du försöka med Google. Sök på java nested for loop till exempel.
Håller med PeterÅ att du behöver förstå exakt hur for-slingor (for loops) fungerar. Det finns inget ungefärligt vid programmering. Ett exempel som du kan laborera med för att förstå bättre:
for (int a = 1; a <= 4; ++a) {
for (int b = 3; b > 0; --b) {
System.out.printf("a=%d, b=%d, a*b=%d \t", a, b, a*b);
}
System.out.println();
}
Den yttre slingan går från 1 upp till 4. Den inre slingan går från 3 ned till 1. Eftersom den inre slingan ligger i den yttre slingan så är de nästlade. Totalt kommer slingorna att itereras 4*3=12 gånger.
Prova att ändra a = 1 till a = 3, b = 3 till b = 5, b > 0 till b >= 0, b > 0 till b < a, et c för att se vad som händer. Lägg tid på att förstå varför det händer. När du förstår detta så kommer du att kunna använda for-slingor som du vill.
Tack så jätte mycket Lindehaven! precis detta jag saknar i mina distansstudier någon som förklarar mer utförligt. ska pilla å ändra tills det sitter =)
Varsågod nutella143. Roligt att kunna hjälpa. Skriv igen om du fastnar på något.