Premiär! Fyndchans i SweClockers Månadens Drop

Omvandlandet av true/false till nummer.

Permalänk

Omvandlandet av true/false till nummer.

Några ideer om hur jag kan göra om så att false skriver ut 0 och true skriver ut 1?
Tack i förväg.

public static void main(String[] args) {

// TODO Auto-generated method stub

int i;
for (i = 0; i < 3; i++) {

int a = (int) (Math.random()*6)+1;

int sum = a;

int b = (int) (Math.random()*6)+1;
int sum2 = a + b;

int c = (int) (Math.random()*6)+1;
int sum3 = a+b+c;

System.out.println(a + " " + 0 + " " + 0 + " Sum: " + sum + " #vinst: " + (12 == sum) + " #förlust: " + (12 < sum));
System.out.println(a + " " + b + " " + 0 + " Sum: " + sum2 + " #vinst: " + (12 == sum2) + " #förlust: " + (12 < sum2));
System.out.println(a + " " + b + " " + c + " Sum: " + sum3 + " #vinst: " + (12 == sum3) + " #förlust: " + (12 < sum3));
System.out.println("Nästa omgång");

}

}

Permalänk
Medlem

Börja med att göra om koden så att variablerna har namn som är representativa. "a" betyder ju ingenting.

Skapa sen en variabel för 12. Vad är 12 egentligen? Varför är 12 == sum == win?

Kanske att man vinner ska skrivas in i en variabel?

Prova skriva ut kommentarer som förklarar vad som händer i spelet, sen gör du om variablerna så de är så förklarande att kommentarerna är onödiga.

Alternativt, skriv om hela programmet i pseudo kod först, det kommer hjälpa dig med namnhivningen.

Typ så här

Kasta tärning två gånger
Om resultatet av kasten blir 12 vinner manom man vunnit skriv ut blabla
Annars skriv ut banan

Permalänk

Vänligen använd [code]-taggar så att koden är lättare att läsa:

public static void main(String[] args) { // TODO Auto-generated method stub int i; for (i = 0; i < 3; i++) { int a = (int) (Math.random()*6)+1; int sum = a; int b = (int) (Math.random()*6)+1; int sum2 = a + b; int c = (int) (Math.random()*6)+1; int sum3 = a+b+c; System.out.println(a + " " + 0 + " " + 0 + " Sum: " + sum + " #vinst: " + (12 == sum) + " #förlust: " + (12 < sum)); System.out.println(a + " " + b + " " + 0 + " Sum: " + sum2 + " #vinst: " + (12 == sum2) + " #förlust: " + (12 < sum2)); System.out.println(a + " " + b + " " + c + " Sum: " + sum3 + " #vinst: " + (12 == sum3) + " #förlust: " + (12 < sum3)); System.out.println("Nästa omgång"); } }

Inkludera gärna dina import-rader också så att andra inte behöver läsa igenom koden för att gissa vad som behöver importeras. Koden går att köra med dessa:

import java.lang.Math; import java.lang.System;

Vad är det du försöker göra? Det ser ut som att du kastar tre sexsidiga tärningar tre gånger om. Blir det exakt 12 (omöjligt med bara en tärning) är det en vinst. Blir det mer än 12 är det en förlust. Blir det mindre än 12 är det varken en vinst eller en förlust. Är det verkligen korrekt att det i vissa fall varken ska vara en vinst eller en förlust? Så här ser det ut på skärmen när jag kör koden:

$ java programmet 3 0 0 Sum: 3 #vinst: false #förlust: false 3 3 0 Sum: 6 #vinst: false #förlust: false 3 3 5 Sum: 11 #vinst: false #förlust: false Nästa omgång 3 0 0 Sum: 3 #vinst: false #förlust: false 3 1 0 Sum: 4 #vinst: false #förlust: false 3 1 5 Sum: 9 #vinst: false #förlust: false Nästa omgång 1 0 0 Sum: 1 #vinst: false #förlust: false 1 6 0 Sum: 7 #vinst: false #förlust: false 1 6 1 Sum: 8 #vinst: false #förlust: false Nästa omgång

För övrigt är det inte så smart att skriva ut "Nästa omgång" på slutet efter sista omgången.

Jag tycker att du har konstig indentering i for-loopen.

Permalänk
Medlem

Skriv en metod:

private int getResult(int sum) { // 'Ternary operation' som returnerar 1 om resultatet är 'true', annars 0 return (12 == sum) ? 1 : 0; }

Generellt bör operationer som ska göras flera gånger brytas ut till en metod.
I detta fall är det särskilt rekommenderat då du har tre olika variabler som alla behöver beräknas på samma sätt.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Skrivet av Kommenterande 2:

Vänligen använd [code]-taggar så att koden är lättare att läsa:

public static void main(String[] args) { // TODO Auto-generated method stub int i; for (i = 0; i < 3; i++) { int a = (int) (Math.random()*6)+1; int sum = a; int b = (int) (Math.random()*6)+1; int sum2 = a + b; int c = (int) (Math.random()*6)+1; int sum3 = a+b+c; System.out.println(a + " " + 0 + " " + 0 + " Sum: " + sum + " #vinst: " + (12 == sum) + " #förlust: " + (12 < sum)); System.out.println(a + " " + b + " " + 0 + " Sum: " + sum2 + " #vinst: " + (12 == sum2) + " #förlust: " + (12 < sum2)); System.out.println(a + " " + b + " " + c + " Sum: " + sum3 + " #vinst: " + (12 == sum3) + " #förlust: " + (12 < sum3)); System.out.println("Nästa omgång"); } }

Inkludera gärna dina import-rader också så att andra inte behöver läsa igenom koden för att gissa vad som behöver importeras. Koden går att köra med dessa:

import java.lang.Math; import java.lang.System;

Vad är det du försöker göra? Det ser ut som att du kastar tre sexsidiga tärningar tre gånger om. Blir det exakt 12 (omöjligt med bara en tärning) är det en vinst. Blir det mer än 12 är det en förlust. Blir det mindre än 12 är det varken en vinst eller en förlust. Är det verkligen korrekt att det i vissa fall varken ska vara en vinst eller en förlust? Så här ser det ut på skärmen när jag kör koden:

$ java programmet 3 0 0 Sum: 3 #vinst: false #förlust: false 3 3 0 Sum: 6 #vinst: false #förlust: false 3 3 5 Sum: 11 #vinst: false #förlust: false Nästa omgång 3 0 0 Sum: 3 #vinst: false #förlust: false 3 1 0 Sum: 4 #vinst: false #förlust: false 3 1 5 Sum: 9 #vinst: false #förlust: false Nästa omgång 1 0 0 Sum: 1 #vinst: false #förlust: false 1 6 0 Sum: 7 #vinst: false #förlust: false 1 6 1 Sum: 8 #vinst: false #förlust: false Nästa omgång

För övrigt är det inte så smart att skriva ut "Nästa omgång" på slutet efter sista omgången.

Jag tycker att du har konstig indentering i for-loopen.

Problemet är att detta är en uppgift så jag vill inte ge all information, vilket gör det svårare att hjälpa mig men tänker att jag inte borde fråga efter hela svaret. Anledningen till varför det står nästa omgång på botten är för att programmet fortsätter att köras tills jag inmatar 1 då slutar det och det kommer up "Avslutar spel". Jag har frågat förut men fick inge svar på hur jag faktiskt gör använder [code]- taggar.

Permalänk
Medlem
Skrivet av MaskenLilja:

Jag har frågat förut men fick inge svar på hur jag faktiskt gör använder [code]- taggar.

Du skriver bara:

[code]
Kod här
[/code]

vilket blir:

Kod här

Permalänk
Skrivet av perost:

Du skriver bara:

[code]
Kod här
[/code]

vilket blir:

Kod här

Tackar.