Instrukcje warunkowe

0

Mam kod, ktory powinien podawac 'login' skladajacy sie z 4 pierwszych znakow imienia i 3 pierwszych znakow numeru identyfikacyjnego (przy zalozeniu, ze jezeli ktores z pol nie spelnia warunkow, podawane jest cale bez ograniczen - np. imie mniejsze niz 4)

Konstruktor

    public Student(String fullName, String studentID)
    {
        name = fullName;
        id = studentID;
        credits = 0;
    }

Metoda dawania loginu

    public String getLoginName()
    {
        String rvariable = null;
        if (name.length() < 4)
        {
            if (id.length() < 3)
            {
                rvariable = name + id;
            }
            
            rvariable = name + id.substring(0,3);
            
        }
        else
        {
            rvariable = name.substring(0,4) + id.substring(0,3);
        }
        
        if (id.length() < 3)
        {
            if (name.length() < 4)
            {
                rvariable = name + id;
            }
            
            rvariable = name.substring(0,4) + id;
        }
        else
        {
            rvariable = name.substring(0,4) + id.substring(0,3);
        }
        
        
        return rvariable;
    }

Jak podaje 'zle' dane to mowi ze nie da rady "java.lang.StringIndexOutOfBoundsException: String index out of range: 4"

0
public String getLoginName() {
		String rvariable = null;
		if (name.length() < 4) {
			if (id.length() < 3) {
				rvariable = name + id;
				return rvariable;
			}else{
				rvariable = name + id.substring(0, 3);
				return rvariable;
			}
		} 
		if (id.length() < 3) {
			if (name.length() < 4) {
				rvariable = name + id;
				return rvariable;
			}else{
				rvariable = name.substring(0, 4) + id;
				return rvariable;
			}
		} else {
			rvariable = name.substring(0, 4) + id.substring(0, 3);
			return rvariable;
		}		
	}

ale da się, a nawet powinno się to napisać jakoś bardziej elegancko

0
public class IDTest {

	public static String login = "LOGIN";
	public static String login2 = "LOG";

	public static int id = 1234;
	public static int id2 = 12;

	public static void main(String[] args) {
		System.out.println(getLoginName(login, ""+id));
		System.out.println(getLoginName(login, ""+id2));
		System.out.println(getLoginName(login2, ""+id2));
		System.out.println(getLoginName(login2, ""+id));
	}

	public static String getLoginName(String login, String id) {
		String logPart = (login.length() < 4) ? login : login.substring(0, 4);
		String idPart = (id.length() < 3) ? id : id.substring(0, 3);
		return logPart + idPart;
	}
}

Kochamy operator trójargumentowy ;)

Sygnatura jest moja, ale tylko na potrzeby tego przykładu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1