Permalänk

Jag behöver hjälp i Java

Jag behöver komplettera Mina koder för att stoppa loopen när tecken S matas in?
Vem kan hjälpa mig?tack

public class Betyg {

/**
* @param args the command line arguments
*/
public static void main(String[] args)throws Exception {
char[][] betyg = {{'A','E','D','C','B','A'},
{'B','F','E','D','A','B'},
{'C','A','F','E','D','C'},
{'D','B','A','F','E','D'},
{'E','C','B','A','F','E'}};
while (true){
System.out.print("Mata in betygsskala A-F: ");
int antal = 0;
int total = 0;

char c = (char) System.in.read();
System.in.read();
for (int i = 0; i<5; i++) {
for (int j = 0; j< 6; j++ ){
if (c == betyg [i][j]){
antal ++;
}
total++;

}

}
}
}

}

Permalänk
Vila i frid

Du kanske kan slänga in ett

if(c=='s' || c=='S') { break; }

någonstans?

Permalänk
Medlem

du kan som ovan avbryta en loop med break, du kan även deklarera din c variabel utanför loopen för att evaluera den varje varv.

char c; //deklarera variabeln utanför loopen för att behålla scope. do { c = (char) System.in.read(); }while(c != 's');

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Sapphire 9070xt pulse| Gskill 32gb 3,6ghz | aw3225qf |

Permalänk
Permalänk
Permalänk
Medlem

Om jag läst din kod rätt så skulle jag även lägga

int antal = 0;
int total = 0;

utanför while loopen just för att dom hela tiden kommer vara 0 samt att du allokerar nytt minne för varje loop-snurr vilket enligt mig känns onödigt och någorlunda farligt med tanke på att du har en while(true) <- tekniskt sett oändlig loop innan du lagt in ett villkor (if-sats) som kommer att uppfyllas för att avbryta den (ja jag läste de tidigare inläggen om en if-sats som kollar efter s eller S men tänkte att detta var mer en tankeställarförklaring). Alternativt göra som @Ragin Pig föreslog där du utvärderar c för varje gång (mycket säkrare).

/Ullman

Visa signatur

CPU: 7800X3D GPU: GeForce RTX 4090 Moderkort: MSI MAG X670E TOMAHAWK
RAM: G.Skill 32GB DDR5 CL32 @6000Mhz Chassi: Fractal Design
PSU: Seasonic Vertex GX-1000W