Java Programming Basics Quiz
81 Questions
2 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

What is the role of the Java compiler in the translation process?

  • Compiles machine code for rapid execution
  • Executes Java programs on the Java Virtual Machine
  • Translates Java source code into bytecode (correct)
  • Transforms Java bytecode into machine code directly

Why does Java have higher portability compared to C/C++?

  • Java programs can run on any CPU without re-compilation (correct)
  • Java requires no interpretation after compilation
  • Java is compiled directly into machine language
  • Java bytecode is designed for a specific type of CPU

Which step is NOT part of the general problem-solving process in programming?

  • Validate the algorithm against multiple languages (correct)
  • Implement the solution
  • Understand the problem
  • Design a solution

What is pseudocode primarily used for?

<p>To express an algorithm in a formal, code-like manner (D)</p> Signup and view all the answers

What is the main difference between a program and an algorithm?

<p>A program follows specific syntax while an algorithm does not (A)</p> Signup and view all the answers

Which naming convention should be used for class names in Java?

<p>Use title case with each word capitalized (D)</p> Signup and view all the answers

What is the correct way to name a constant in Java?

<p>CONSTANT_NAME (C)</p> Signup and view all the answers

Which of the following identifiers is valid in Java?

<p>PriceBeforeTax (B)</p> Signup and view all the answers

What should be avoided when naming variables to prevent confusion?

<p>Utilizing Java's predefined identifiers (C)</p> Signup and view all the answers

Which of the following is a reserved word in Java?

<p>void (A)</p> Signup and view all the answers

Which of the following identifications correctly demonstrates bad indentation?

<p>public class Lincoln2{public static void main(String[]args){ System.out.println(); }} (D)</p> Signup and view all the answers

What does Java's case sensitivity mean for identifier names?

<p>Identifiers are case-sensitive and can differ based on capitalization (C)</p> Signup and view all the answers

Which statement about white space in programming is true?

<p>Extra white space is ignored by the compiler (D)</p> Signup and view all the answers

Which of the following data types can represent a character in Java?

<p>char (B)</p> Signup and view all the answers

What is the main difference between 'byte' and 'double' data types?

<p>They have different sizes and storage capacities. (A)</p> Signup and view all the answers

In the example program, what is the output of the second print statement?

<p>Whatever you are, be a good one. (A)</p> Signup and view all the answers

Which of the following is true regarding floating-point numbers in Java?

<p>They may result in round-off errors. (D)</p> Signup and view all the answers

What would be the output of the line: System.out.println("A quote by Abraham Lincoln:");?

<p>A quote by Abraham Lincoln: (B)</p> Signup and view all the answers

Which primitive data type would you use for a variable that needs to store true or false values?

<p>boolean (B)</p> Signup and view all the answers

How many primitive data types are there in Java?

<p>8 (A)</p> Signup and view all the answers

Which of the following best describes the 'long' data type?

<p>Stores larger integer values than 'int'. (C)</p> Signup and view all the answers

What will be printed to the console when the code outputs the number of sides in a dodecagon?

<p>A dodecagon has 12 sides. (C)</p> Signup and view all the answers

Which of the following statements correctly defines a declaration in Java?

<p>char c; (B), int x = 5; (C)</p> Signup and view all the answers

What is the result of the expression 10 / 8 in Java when using integer division?

<p>1 (C)</p> Signup and view all the answers

What will the remainder be for the expression 8 % 12?

<p>8 (B)</p> Signup and view all the answers

Which of the following statements will successfully swap the values of two variables x and y, where int x = 10 and int y = 20?

<p>int temp = x; x = y; y = temp; (A)</p> Signup and view all the answers

How many sides does a heptagon have as described in the code?

<p>7 (A)</p> Signup and view all the answers

What does the division operator (/) return when applied to two integers in Java?

<p>The integer quotient (C)</p> Signup and view all the answers

Which statement is NOT correct regarding the equality relation in mathematics compared to Java?

<p>In Java, 'a + 6 = 10' can be true. (C)</p> Signup and view all the answers

What is the correct way to read two integers using the Scanner class?

<p>scannerObject.nextInt(); scannerObject.nextInt(); (A)</p> Signup and view all the answers

What will be displayed if the user enters 5 and 10?

<p>You entered 5 and 10 (B)</p> Signup and view all the answers

Why is it important to close a Scanner object?

<p>To prevent memory leaks and resources from being used indefinitely. (B)</p> Signup and view all the answers

Which operator is used for assignment in Java?

<p>= (C)</p> Signup and view all the answers

What does the Scanner method nextDouble() accomplish?

<p>Reads a floating-point number. (C)</p> Signup and view all the answers

What would happen if the user enters '5.5 a' when asked to enter two numbers with decimal points?

<p>An InputMismatchException will occur. (C)</p> Signup and view all the answers

What is the effect of assigning a new value to a variable in Java?

<p>The existing value is overwritten by the new value. (B)</p> Signup and view all the answers

What is the purpose of using the statement Scanner scannerObject = new Scanner(System.in);?

<p>To create a new Scanner object to read user input from the console. (A)</p> Signup and view all the answers

What is the result of the expression $1.0 * 2 / 4$?

<p>0.5 (double) (B)</p> Signup and view all the answers

What happens during a narrowing conversion in programming?

<p>A compilation error occurs due to potential loss of information. (D)</p> Signup and view all the answers

Which statement about widening conversion is accurate?

<p>It occurs when a variable with a smaller type is assigned a larger type expression. (A)</p> Signup and view all the answers

What does casting in programming allow a programmer to do?

<p>Explicitly force a type conversion with a specific syntax. (C)</p> Signup and view all the answers

Which of the following assignments would cause a compilation error due to narrowing conversion?

<p>int aVar; aVar = 10.0 / 4; (A)</p> Signup and view all the answers

In the statement 'b3 = b1 + b2;', which type can variable b3 correctly hold?

<p>int, because the addition changes the type. (A)</p> Signup and view all the answers

Which assignment is valid considering type conversion rules?

<p>b3 = (byte)1 + b2; (D)</p> Signup and view all the answers

Why can floating point types and integral types be used together in expressions?

<p>Integral and floating point types are compatible in Java. (C)</p> Signup and view all the answers

Java bytecode is directly executable by the hardware without any translation.

<p>False (B), True (A)</p> Signup and view all the answers

A program written in Java can run on any computer without recompilation.

<p>True (A)</p> Signup and view all the answers

An algorithm is a written program that must follow a strict syntax.

<p>True (A), False (B)</p> Signup and view all the answers

The main function of the Java interpreter is to convert Java source code into machine code.

<p>True (A), False (B)</p> Signup and view all the answers

In problem solving, the first step is to implement the solution before understanding the problem.

<p>True (A), False (B)</p> Signup and view all the answers

A variable must be declared after it is used.

<p>False (B), True (A)</p> Signup and view all the answers

An uninitialized variable is automatically assigned a default value.

<p>True (A)</p> Signup and view all the answers

It is beneficial to initialize variables explicitly for program clarity.

<p>True (A)</p> Signup and view all the answers

Multiple variables can be declared in a single statement in Java using commas.

<p>True (A)</p> Signup and view all the answers

The value of a variable in a program is determined at its declaration only.

<p>True (A), False (B)</p> Signup and view all the answers

A char in Java can store multiple characters at once.

<p>True (A), False (B)</p> Signup and view all the answers

Unicode character set can represent up to 65,536 possible characters.

<p>True (A)</p> Signup and view all the answers

ASCII is a larger character set than Unicode.

<p>True (A), False (B)</p> Signup and view all the answers

In Java, boolean values can be represented by the words true, false, 0, and 1.

<p>True (A), False (B)</p> Signup and view all the answers

Control characters in the ASCII character set include ' ' and ' '.

<p>True (A)</p> Signup and view all the answers

The Scanner class in Java is used to gather input from the console.

<p>True (A)</p> Signup and view all the answers

The expression to calculate the total number of peas is written as 'totalNumberOfPeas = numberOfPods + peasPerPod'.

<p>True (A), False (B)</p> Signup and view all the answers

Closing the Scanner object is unnecessary in Java as it does not impact resource management.

<p>True (A), False (B)</p> Signup and view all the answers

The method nextInt() can read both integers and decimal numbers from user input.

<p>True (A), False (B)</p> Signup and view all the answers

The output statement displaying the total number of peas is formatted as 'The total number of peas = totalNumberOfPeas'.

<p>True (A)</p> Signup and view all the answers

The method concat is used to combine two strings in Java.

<p>True (A)</p> Signup and view all the answers

Using nextLine after nextInt requires an extra invocation to clear the buffer in Java.

<p>True (A)</p> Signup and view all the answers

The replace method in Java can only replace characters but not entire strings.

<p>True (A), False (B)</p> Signup and view all the answers

The substring method returns a new string that contains a portion of the original string.

<p>True (A)</p> Signup and view all the answers

The Scanner class is used to output data in Java.

<p>True (A), False (B)</p> Signup and view all the answers

The method toUpperCase modifies the original string in Java.

<p>True (A), False (B)</p> Signup and view all the answers

A string in Java can be initialized with new String() or with double quotes.

<p>True (A)</p> Signup and view all the answers

The command scannerObject.next() reads an entire line of text from the input.

<p>True (A), False (B)</p> Signup and view all the answers

A constant in Java can hold multiple values during program execution.

<p>True (A), False (B)</p> Signup and view all the answers

The final modifier is used to define a variable that can be changed later in a Java program.

<p>True (A), False (B)</p> Signup and view all the answers

The System.out.println method advances to the next line after displaying its content.

<p>True (A)</p> Signup and view all the answers

Using a backslash character is necessary to print a double quote character in Java.

<p>True (A)</p> Signup and view all the answers

String literals in Java can be split across multiple lines without any issues.

<p>True (A), False (B)</p> Signup and view all the answers

In Java, the + operator is used for both string concatenation and mathematical addition without any special requirements.

<p>True (A), False (B)</p> Signup and view all the answers

If two strings are concatenated using the + operator without parentheses, they are treated as a single string.

<p>True (A)</p> Signup and view all the answers

Escape sequences in Java can represent special characters but are considered as two separate characters.

<p>True (A), False (B)</p> Signup and view all the answers

Flashcards

Java Bytecode

A machine language for a fictitious computer called the Java Virtual Machine (JVM).

Java Interpreter

Executes Java bytecode by translating it into machine code for the specific computer.

Algorithm

A step-by-step process for solving a problem, expressed in natural language.

Pseudocode

An algorithm written in a code-like but not rigidly-structured form; not a specific programming language.

Signup and view all the flashcards

Program

An algorithm written in a specific programming language; follows a particular syntax.

Signup and view all the flashcards

Identifier

A name used to identify a variable, method, class, or other program element. It must begin with a letter, underscore (_), or dollar sign ($) and can contain letters, digits, underscores, and dollar signs.

Signup and view all the flashcards

Reserved Words

Words that have special meaning in the Java language and cannot be used as identifiers for variables, methods, classes, or other program elements.

Signup and view all the flashcards

Case Sensitivity

Java distinguishes between uppercase and lowercase letters in identifiers.

Signup and view all the flashcards

Predefined Identifiers

Names that are already used by the Java language, such as System, String, and println. While they can be redefined, it is strongly discouraged.

Signup and view all the flashcards

Good Indentation

Using spaces, blank lines, and tabs to format a program for readability and maintainability.

Signup and view all the flashcards

Bad Indentation

Code that is formatted poorly, making it difficult to read and understand.

Signup and view all the flashcards

Whitespace

Spaces, blank lines, and tabs used to separate words and symbols in a program. Extra whitespace is typically ignored by the compiler.

Signup and view all the flashcards

Consistent Indentation

Using a uniform pattern of spaces or tabs to align related parts of the program, enhancing readability.

Signup and view all the flashcards

Scanner class

A class in Java that enables reading various types of data from input sources, such as the console or files.

Signup and view all the flashcards

Scanner object

An instance of the Scanner class, used to interact with the input source.

Signup and view all the flashcards

nextInt()

A method of the Scanner class that reads and returns the next integer value from the input.

Signup and view all the flashcards

nextDouble()

A method of the Scanner class that reads and returns the next double value from the input.

Signup and view all the flashcards

close()

A method used to close a Scanner object, releasing resources and preventing potential errors.

Signup and view all the flashcards

Assignment operator

The equal sign (=) used to assign a value to a variable.

Signup and view all the flashcards

Expression

A combination of variables, operators, and values that results in a single value.

Signup and view all the flashcards

Variable = Expression

The assignment statement where the result of the evaluated expression on the right is stored in the variable on the left.

Signup and view all the flashcards

Java Primitive Data Types

Basic building blocks for storing data in Java, representing simple values like numbers, characters, and true/false.

Signup and view all the flashcards

Integer Types in Java

Represent whole numbers without decimal points, used to store values like ages, quantities, and scores. They differ in the range of values they can store.

Signup and view all the flashcards

Floating-Point Types in Java

Represent numbers with decimal points, used to store values like temperatures, measurements, and calculations involving fractions.

Signup and view all the flashcards

Byte in Java

Smallest integer type in Java, typically used to store small numerical values, such as single characters.

Signup and view all the flashcards

Short in Java

Integer type used to store whole numbers within a moderate range, like scores or ages.

Signup and view all the flashcards

Int in Java

Most commonly used integer type, used for representing whole numbers within a larger range, like population counts or large calculations.

Signup and view all the flashcards

Long in Java

Largest integer type, used for representing extremely large whole numbers, like astronomical distances or timestamps.

Signup and view all the flashcards

Float in Java

Single-precision floating-point type, used to store numbers with decimal points within a moderate range.

Signup and view all the flashcards

Double in Java

Double-precision floating-point type, used to store numbers with decimal points over a wider range and with higher precision.

Signup and view all the flashcards

Char in Java

Represents a single character, like a letter or a symbol, useful for storing text or for interacting with keyboard input.

Signup and view all the flashcards

Boolean in Java

Represents a logical value - either 'true' or 'false', used to represent conditions and decision-making in programs.

Signup and view all the flashcards

Round-Off Errors with Floating-Point Numbers

Floating-point numbers are approximations, and calculations with them may lead to small inaccuracies due to limitations in their representation.

Signup and view all the flashcards

Declaration with Initialization

Assigning a value to a variable at the time of its creation.

Signup and view all the flashcards

Assignment Statement

Changing the value of an existing variable.

Signup and view all the flashcards

Swap Variables

Exchanging the values of two variables.

Signup and view all the flashcards

Expression in Java

A combination of operands (values) and operators (symbols) that results in a value.

Signup and view all the flashcards

Arithmetic Operators

Symbols used for basic mathematical operations.

Signup and view all the flashcards

Integer Division

Division where both operands are integers, resulting in an integer quotient.

Signup and view all the flashcards

Real Division

Division where at least one operand is a decimal number, resulting in a decimal quotient.

Signup and view all the flashcards

Remainder Operator (%)

Returns the remainder after integer division.

Signup and view all the flashcards

Widening Conversion

Automatic conversion of an expression to a wider data type when assigning to a variable. This conversion preserves the value, ensuring no information loss.

Signup and view all the flashcards

Narrowing Conversion

Conversion of an expression to a narrower data type, which can lead to potential data loss. This attempt results in a compilation error, as Java prevents potential loss of information.

Signup and view all the flashcards

Casting

Explicit conversion of an expression to a specific data type. It allows the programmer to force a type conversion, but it can introduce potential errors.

Signup and view all the flashcards

Valid Casting?

Determine if the casting operation in a given Java statement is valid based on data type compatibility.

Signup and view all the flashcards

Data Type Compatibility

Understanding whether different data types can be converted to each other in Java. Integral and floating-point types are compatible, but boolean is incompatible.

Signup and view all the flashcards

Possible Data Loss

The risk of losing information during conversion from a wider to a narrower data type. This occurs when the value cannot be fully represented in the target data type.

Signup and view all the flashcards

Arithmetic Operations & Data Types

Understanding how data types influence the result of arithmetic operations in Java. For example, dividing two integers results in an integer, potentially truncating decimal values.

Signup and view all the flashcards

Java Virtual Machine (JVM)

The software that acts as a translator between Java bytecode and the specific computer's language.

Signup and view all the flashcards

Why does Java need bytecode?

Bytecode allows Java programs to run on any platform without needing to be recompiled for each specific computer.

Signup and view all the flashcards

What is a program?

A set of instructions that a computer can follow to solve a specific problem.

Signup and view all the flashcards

Problem Solving Steps

Understanding the problem, designing a solution (algorithm), implementing the solution (writing the program), and testing the solution.

Signup and view all the flashcards

Character Data Type

Stores a single character, like a letter, digit, or symbol. It uses the Unicode character set, which includes characters from various alphabets and symbols.

Signup and view all the flashcards

Unicode Character Set

An international standard for representing text characters. It assigns a unique number code to each character, allowing for a wide range of characters from different languages.

Signup and view all the flashcards

ASCII Character Set

A subset of Unicode, containing characters like letters, digits, punctuation marks, and special symbols. It is a commonly used character set for English text.

Signup and view all the flashcards

Boolean Data Type

Represents a logical value that can be either 'true' or 'false'. It is used to represent conditions and make decisions in Java programs.

Signup and view all the flashcards

Variable

A named location in memory that stores a value. It allows you to store and access data within your program.

Signup and view all the flashcards

Variable Declaration

Declaring a variable in Java involves giving it a name and specifying the type of data it will hold. This step reserves space in the program's memory for the variable.

Signup and view all the flashcards

Data Type

A data type defines what kind of information a variable can store. Examples include 'int' for whole numbers, 'double' for decimal numbers, and 'String' for text.

Signup and view all the flashcards

Variable Initialization

Giving a variable an initial value during its declaration, ensuring it has a starting value before being used in the program.

Signup and view all the flashcards

Why Initialize Variables?

Initializing variables helps avoid unexpected behavior and improves code clarity. It provides known starting values for calculations and comparisons.

Signup and view all the flashcards

Variable Assignment

The process of giving a variable a new value using the assignment operator (=).

Signup and view all the flashcards

Constant

A value that cannot be changed during program execution. It's declared using the 'final' modifier.

Signup and view all the flashcards

System.out.print

Prints the specified text to the console without advancing to the next line.

Signup and view all the flashcards

System.out.println

Prints the specified text to the console and advances to the next line.

Signup and view all the flashcards

Concatenation with +

The '+' operator combines strings and variables to form a single string.

Signup and view all the flashcards

Escape Sequence

Special characters used to represent special characters within a string.

Signup and view all the flashcards

Double Quote Escape

The escape sequence '"' is used to print a double quote character within a string.

Signup and view all the flashcards

Output with Variables

You can use variables in print statements to generate output that depends on variable values.

Signup and view all the flashcards

Multiple Output with +

Use the '+' operator to combine strings and variables to create multi-part output.

Signup and view all the flashcards

keyboard.close()

A method used to close a Scanner object, releasing resources and preventing potential errors. It's like telling the reader to stop reading and go on a break.

Signup and view all the flashcards

String Concatenation

Joining two strings together to create a new, longer string.

Signup and view all the flashcards

String to Uppercase

Converting all characters in a string to uppercase.

Signup and view all the flashcards

String Replacement

Replacing one character in a string with another character.

Signup and view all the flashcards

String Substring

Extracting a portion of a string starting at a specific index and ending at another index.

Signup and view all the flashcards

Garbage Value

A random value that a variable might hold before it is assigned a value.

Signup and view all the flashcards

Study Notes

COMP 248: Object Oriented Programming I

  • Course overview: COMP 248 is an introductory object-oriented programming course.

Chapter 1: A First Program

  • Programming: Humans communicate in natural language (complex syntax, semantic ambiguity) whereas machines use binary code (simple syntax, no ambiguity).
  • Programming languages: Restricted vocabularies and syntax, aim to eliminate ambiguity. Often use compilers and interpreters to translate code.
  • Java language: Created by Sun Microsystems (1991), originally for home appliances, introduced in 1995, object-oriented programming (OOP).
  • Java program: Written using a class structure. One or more methods can be contained. The main method is the program's starting point. Example: A small Java program may demonstrate the basic structure of a Java application, including the public class declaration and a main method.

Compilers

  • Compilers translate source code into machine language.
  • Different CPU types use different machine languages.
  • Compiled programs are typically not portable across different platforms (need recompilation).
  • Java is an exception: it uses bytecode, a platform-independent intermediate language.
  • A compiler translates source code into a platform-independent intermediate language called bytecode.

Java Translation

  • Java compiler: Translates Java source code into bytecode (machine language for the Java Virtual Machine).
  • Java Virtual Machine (JVM): A fictitious computer that executes Java bytecode.
  • Java interpreter: Converts bytecode to machine code for execution on the specific computer's CPU.
  • Source code is compiled to bytecode, which is then executed by the interpreter (JVM) on any machine

Definitions

  • Algorithm: A step-by-step process for solving a problem (expressed in natural language).
  • Pseudocode: A more formal representation of an algorithm using code-like syntax but not a specific programming language.
  • Program: An algorithm expressed in a programming language (follows a specific syntax).

Problem Solving

  • Purpose of writing a program: To solve a problem.
  • Steps for problem solving: Understand the problem, design a solution (algorithm), implement the solution (write the program), test the program and fix problems.

Java Program Structure

  • Structure: One or more classes.
  • Class: A collection of actions.
  • Methods: Individual actions within a class. Contains statements/instructions.
  • main method: Every Java program must have a main method. This is the starting point.

Syntax and Semantics

  • Syntax rules: Define how to structure the symbols, identifiers, and reserved words of the programming language
  • Semantics: Define the meaning of statements in a language.

Types of Errors

  • Compile-time (syntax) errors: Found by compiler, prevent program execution.
  • Run-time errors: Occur during program execution, cause abnormal termination.
  • Logical (semantic) errors: Errors in the algorithm; program runs, but produces incorrect results. Debugging is used to find and fix these.

Basic Program Development

  • Steps: Edit and save program, compile program, execute program, evaluate results.

Development Environments

  • Basic compiler and interpreter (ex: Sun Java Development Kit (JDK)).
  • Integrated Development Environments (IDEs): Eclipse, JCreator, Borland JBuilder, Microsoft Visual J++.

Chapter 1 & 2: Java Fundamentals & Console Input

  • Topics: Comments, Identifiers, Indentation, Primitive Types, Variables, Output, Numerical Console Input

Comments

  • Inline documentation to describe purpose and steps.
  • Three types (forms): Single line (//), multi-line (/* */), and javadoc (/** */).

Identifiers

  • Naming convention for variables, classes, methods, etc.
  • Can use letters, digits, underscore (_), and dollar sign ($). Cannot start with a digit, contain blanks, or be a reserved keyword. Significant names!

Indentation

  • White space used to separate code components in programs and improve readability.

Primitive Types

  • Include numerical types (integers, floating-point numbers), characters, and booleans.

Variables

  • Names for memory locations to store data (must be declared).

Variables Initialization

  • Variables can be initialized in declarations (with default values by default). Explicit initialization is good practice.

Constants

  • Similar to variables, but their values cannot change. Use the final modifier.

Output

  • Using System.out.print and System.out.println to display outputs.
  • Escape sequences to deal with special characters (e.g., double quotes). Example escape sequence \n for new line.

Numeric Console Input

  • Using the Scanner class to get input from the user. Example: Scanner keyboard = new Scanner(System.in);

Assignment Operators

  • Using = to assign values.
  • Several shorthand operators exist (+=, -=, *= etc). Shorthand operators combine an operation and assignment in a single step.

Arithmetic Expressions

  • Operators for arithmetic operations (+, -, *, /, %).
  • Precedence rules dictate the order of operations (parentheses, exponents, multiplication, division, addition, subtraction). Associativity rules provide when operators of equal precedence are encountered.

Assignment Compatibility

  • Rules for assigning values of different types (e.g., integers to doubles). Wider type variables can accommodate narrower types.

Casting

  • Explicit conversion from one data type to another type (e.g.(int)) .

Strings

  • Strings are objects (not primitive types).
  • Use double quotation marks to define a string.
  • String methods to manipulate strings are provided with the String class.
  • String objects are immutable.

String Indexes

  • String indexes start counting at 0.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Lecture 1.PDF

Description

Test your knowledge on the fundamental concepts of Java programming, including the role of the compiler, data types, naming conventions, and problem-solving processes. This quiz will challenge your understanding of key principles that make Java a widely used programming language.

More Like This

Java Programming Concepts Quiz
10 questions

Java Programming Concepts Quiz

InvigoratingForesight avatar
InvigoratingForesight
Programming Concepts Overview
39 questions
Java Introduction Quiz
5 questions

Java Introduction Quiz

DexterousNewOrleans avatar
DexterousNewOrleans
Use Quizgecko on...
Browser
Browser