Ik probeer te begrijpen wat sentinel is of hoe het werkt met het programma. Hoe dan ook, dit is het codeblok dat ik probeer te begrijpen. Ik weet dat het een schildwachtlus is, maar ik weet niet wat het doet.
private static final int SENTINEL = -999
Van wat ik heb gegoogled, is dat door een negatief geheel getal te hebben, dit het einde van een reeks aangeeft. Maar hoe doet het dat? Oh, en hoe initialiseer ik de sentinel? Is het al geïnitialiseerd?
public static int gameScore(int[] teamBoxScore) { //This is telling me the name of an array
int output = 0;
for (int v : teamBoxScore){ //I know that this the values of the array will be stored in the variable "v".
if (v !=SENTIENL) {//
output += v;
}
}
return output;
}
Alstublieft en bedankt! Ik leer coderen met Java
Antwoord 1, autoriteit 100%
Er is niets bijzonders aan een ‘schildwacht’. Het is gewoon een constante van uw keuze die geen legitieme waarde is in een gegevensset, dus u kunt deze gebruiken om het einde van een reeks te markeren. Als de boxscore van een team bijvoorbeeld nooit minder dan nul zal zijn, kan -999 (of een andere negatieve waarde) worden gebruikt als een break/end-markering.
Meestal zijn er betere, schonere manieren om dit te doen.
Antwoord 2, autoriteit 29%
om sentinel-controlled repetition
te begrijpen, laten we een simple
voorbeeld bekijken,
import java.util.Scanner; // program uses class Scanner
public class ClassAverage
{
public static void main(String[] args)
{
// create Scanner to obtain input from command window
Scanner input = new Scanner(System.in);
// initialization phase
int total = 0; // initialize sum of grades
int gradeCounter = 0; // initialize # of grades entered so far
// processing phase
// prompt for input and read grade from user
System.out.print("Enter grade or -1 to quit: ");
int grade = input.nextInt();
// loop until sentinel value read from user
while (grade != -1)
{
total = total + grade; // add grade to total
gradeCounter = gradeCounter + 1; // increment counter
// prompt for input and read next grade from user
System.out.print("Enter grade or -1 to quit: ");
grade = input.nextInt();
}
// termination phase
// if user entered at least one grade...
if (gradeCounter != 0)
{
// use number with decimal point to calculate average of grades
double average = (double) total / gradeCounter;
// display total and average (with two digits of precision)
System.out.printf("%nTotal of the %d grades entered is %d%n",
gradeCounter, total);
System.out.printf("Class average is %.2f%n", average);
}
else // no grades were entered, so output appropriate message
System.out.println("No grades were entered");
}
} // end class ClassAverage
laten we het nu uitvoeren
Enter grade or -1 to quit: 97
Enter grade or -1 to quit: 88
Enter grade or -1 to quit: 72
Enter grade or -1 to quit: -1
Total of the 3 grades entered is 257
Class average is 85.67
In een door de schildwacht gecontroleerde lus moeten prompts de gebruiker aan de schildwacht herinneren. het is een goede gewoonte om te doen
referentie: Java™ How To Program (Early Objects), tiende editie
Antwoord 3, autoriteit 14%
Schildwachtwaarde wordt gebruikt om extra controles in loops te voorkomen.
Bij het zoeken naar een bepaalde waarde in een ongesorteerde lijst, wordt elk element vergeleken met deze waarde, waarbij de lus eindigt wanneer gelijkheid wordt gevonden; om echter het geval aan te pakken dat de waarde afwezig zou zijn, moet men ook na elke stap testen of de zoekopdracht niet succesvol is voltooid. Door de gezochte waarde aan het einde van de lijst toe te voegen, is een mislukte zoekopdracht niet langer mogelijk en is er geen expliciete beëindigingstest vereist in de binnenste lus; achteraf moet men nog beslissen of er een echte match is gevonden, maar deze test hoeft maar één keer te worden uitgevoerd in plaats van bij elke iteratie.