Vinnaren i pepparkakshustävlingen!
2016-05-07, 01:56
  #1
Medlem
Hej


Har skrivit klart min kod men behöver lite hjälp nu för den krånglar.

Den ska skriva ut en triangel som är uppbyggd av siffror men om jag skriver in att den ska skriva ut en triangel med hjälp av 1-4 så så skriver den ut såhär:
1
22
333
4444
Det är ju korrekt men problemet är att den skriver ut triangeln fyra gånger vilket blir fel.

Min kod: http://pastebin.com/FFpcg0eS

Skulle vara jättesnällt om någon kan hjälpa mig
Citera
2016-05-07, 03:49
  #2
Medlem
tantrs avatar
Kan inte kolla koden så bra på mobilen. Blir en gröt.

Såg att du har en nedrans massa for loopar.

Eftersom du säger att programmet skriver ut trianglern 4ggr så kolla om någon variabel har värdet 3 eller 4. Kolla sedan om variablen är ett villkor för en av dina loopar.

Kanske glömmer du att nollställa en variabel?

Orkar tyvärr inte kolla koden på mobilen .
Citera
2016-05-07, 05:21
  #3
Moderator
Neksnors avatar
Raderna 24 och 25 ser lite onödigt redundanta ut vid en snabb titt.

1. Indentera ordentligt. Det blir lättare att läsa koden.

2. Använd alltid måsvingar, {}, efter if/while... satser. Det ger mer konsekvent kod och du minskar risken för fel om du lägger till en extra rad i satsen.

3. Använd vettiga namn på saker och ting. Varför heter det skrivbord och valda?

4. Klistra gärna in koden här, använd spoiler och code-taggar.
Citera
2016-05-07, 05:45
  #4
Moderator
Neksnors avatar
Testkörde nu och det blir bara fel när den räta vinkeln är uppåt.
Citera
2016-05-07, 14:26
  #5
Medlem
rjonssons avatar
Detta är ett ypperligt tillfälle att lära sig använda debuggern. Kolla tutorials på youtube, bara skriv eclipse debug tutorial eller vad du nu använder för IDE.
Citera
2016-05-07, 17:47
  #6
Medlem
Citat:
Ursprungligen postat av CMLN
Hej


Har skrivit klart min kod men behöver lite hjälp nu för den krånglar.

Den ska skriva ut en triangel som är uppbyggd av siffror men om jag skriver in att den ska skriva ut en triangel med hjälp av 1-4 så så skriver den ut såhär:
1
22
333
4444
Det är ju korrekt men problemet är att den skriver ut triangeln fyra gånger vilket blir fel.

Min kod: http://pastebin.com/FFpcg0eS

Skulle vara jättesnällt om någon kan hjälpa mig

Kod:
import java.util.Scanner;

public class 
noob {

    public static 
void main(String[] args) {

        
boolean kora true;

        while (
kora) {
            
            
Scanner skrivbord = new Scanner(System.in);

            
System.out.println("Ange längden pÃ¥ den 2 lika lÃ¥nga sidorna (Avsluta med -1):");
            
int valda 0;
            
int langd skrivbord.nextInt();
            if (
langd == -1)
                
kora = !kora;

            else {
                
System.out.println("Ska den räta vinkeln vara nedÃ¥t (0) eller uppÃ¥t (1):");
                
valda skrivbord.nextInt();

                
int ij;
                if (
valda == 0) {
                    
//for (i = 1; i <= langd && langd < 10; i++)
                        
for (1<= langdi++)
                        {
                            for (
1<= ij++) {
                                
System.out.print(i);
                            }
                            
System.out.print("\n");
                        }
                }

                else if (
valda == 1)
                    
//for (i = 1; i <= langd && langd < 10; i++)
                        
for (int i1 = (valda == langd); +valda == i1 <= langd i1 0i1 += (valda == : -1))
                        {
                            for (
int j1 1j1 <= i1j1++)
                                
System.out.print(i1);

                            
System.out.println();
                        }

            }
        }
    }


Avmarkerade onödiga forloopar

"ursäkta" klassnamnet
__________________
Senast redigerad av PG-k 2016-05-07 kl. 17:54.
Citera
2016-05-07, 23:40
  #7
Medlem
Citat:
Ursprungligen postat av tantr
Kan inte kolla koden så bra på mobilen. Blir en gröt.

Såg att du har en nedrans massa for loopar.

Eftersom du säger att programmet skriver ut trianglern 4ggr så kolla om någon variabel har värdet 3 eller 4. Kolla sedan om variablen är ett villkor för en av dina loopar.

Kanske glömmer du att nollställa en variabel?

Orkar tyvärr inte kolla koden på mobilen .

Löste det nu, tack för att du försökte


Citat:
Ursprungligen postat av Neksnor
Raderna 24 och 25 ser lite onödigt redundanta ut vid en snabb titt.

1. Indentera ordentligt. Det blir lättare att läsa koden.

2. Använd alltid måsvingar, {}, efter if/while... satser. Det ger mer konsekvent kod och du minskar risken för fel om du lägger till en extra rad i satsen.

3. Använd vettiga namn på saker och ting. Varför heter det skrivbord och valda?

4. Klistra gärna in koden här, använd spoiler och code-taggar.


Tack för tipsen om vad jag kan göra för att få en renare kod

Citat:
Ursprungligen postat av rjonsson
Detta är ett ypperligt tillfälle att lära sig använda debuggern. Kolla tutorials på youtube, bara skriv eclipse debug tutorial eller vad du nu använder för IDE.

Tack


Citat:
Ursprungligen postat av PG-k
Kod:
import java.util.Scanner;

public class 
noob {

    public static 
void main(String[] args) {

        
boolean kora true;

        while (
kora) {
            
            
Scanner skrivbord = new Scanner(System.in);

            
System.out.println("Ange längden pÃ¥ den 2 lika lÃ¥nga sidorna (Avsluta med -1):");
            
int valda 0;
            
int langd skrivbord.nextInt();
            if (
langd == -1)
                
kora = !kora;

            else {
                
System.out.println("Ska den räta vinkeln vara nedÃ¥t (0) eller uppÃ¥t (1):");
                
valda skrivbord.nextInt();

                
int ij;
                if (
valda == 0) {
                    
//for (i = 1; i <= langd && langd < 10; i++)
                        
for (1<= langdi++)
                        {
                            for (
1<= ij++) {
                                
System.out.print(i);
                            }
                            
System.out.print("\n");
                        }
                }

                else if (
valda == 1)
                    
//for (i = 1; i <= langd && langd < 10; i++)
                        
for (int i1 = (valda == langd); +valda == i1 <= langd i1 0i1 += (valda == : -1))
                        {
                            for (
int j1 1j1 <= i1j1++)
                                
System.out.print(i1);

                            
System.out.println();
                        }

            }
        }
    }


Avmarkerade onödiga forloopar

"ursäkta" klassnamnet

Det är ett klassnamn som passar mig, riktigt svårt men ändå kul på samma gång med programmeringen
Tack för hjälpen, koden fungerar nu
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