Как я могу принимать только три конкретных имени от пользователя?

2 месяца программист здесь.

Попытка создать программу, которая принимает 3 оценки студента. Выход будет имя, отметка и ранг они достигли.
Мой вопрос заключается в том, что я хочу, чтобы программа принимала только 3 конкретных имени (e.G Lisa, Lorraine, Susan) и если кто-то другой печатает другое имя, я хотел бы, чтобы оно отображало » Invalid»

Также
Как вы можете видеть, я могу только отображать имя студентов, если пользователь вводит правильную метку. («Привет Лиза, ваш знак» + знак) так что если я введу другое имя и тот же знак, он будет отображать тот же вывод.
Как я решаю?

КОД:

package studentmarks;

import java.util.Scanner;
public class StudentMarks 

{


  public static void main(String[] args) 
  {
    int mark;
    int passmark = 50;

    String name;

    Scanner sc = new Scanner(System.in);

    System.out.println(" Enter your name "); //ask user for name
    name = sc.nextLine(); //accept input

    System.out.println("Now please enter your mark");   //ask user to enter mark
    mark = sc.nextInt(); //accept mark


    if (mark == 60) //if mark = 60
    {
        System.out.println(" Hi Lisa, your mark is " + mark ); //output
    }

    if (mark ==12)
    {
        System.out.println("Hi Lorraine, you scored a mark of " + mark);  
    }

    if (mark== 50) 
    {
        System.out.println("Hi susan, you have scored a mark of " + mark);
    }

     if (mark < passmark)
    {
        System.out.println("FAIL");
    }

      if (mark >= passmark)
    {
        System.out.println("PASS");
    }


 }

Спасибо, что нашли время прочитать это.

1 ответ

  1. Вам нужен шаг проверки. Вы никогда не проверяете введенные nameзначения на допустимые. Попробовать это:

    public static void main(String[] args) 
    {
        // Initial setup stuff here
        // ...
    
        System.out.println("Enter your name:"); //ask user for name
        name = sc.nextLine(); //accept input
    
        boolean validName = validateName(name);
        if(validName)
        {
            System.out.println("Now please enter your mark:"); //ask user to enter mark
            mark = sc.nextInt(); //accept mark
    
            System.out.println("Hi " + name + ". You scored a " + mark + ".");
    
            String result = "pass";
            if (mark < passmark)
            {
               result = "fail";
            }
            System.out.println("You " + result + ".");
        }
        else
        {
            System.out.println(name + " is not a valid entry.");
        }
    }
    
    public boolean validateName(String name)
    {
        if(name.equalsIgnoreCase("Lisa") || name.equalsIgnoreCase("Lorraine") || name.equalsIgnoreCase("Susan")
        {
            return true;
        }
    
        return false;
    }