Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Tekstien vertailu ei onnistu

kukkakaali [19.09.2017 16:53:16]

#

Terve!En tiedä onko vastaavaa ongelmaa kysytty aikaisemminkin kun en edes tiedä mikä ongelma on:) Ajattelin nyt kumminkin koittaa tätkin kautta jos vaikka saisi apuja. Koodini on seuraava:

package kthulhu;

import java.util.Scanner;

public abstract class luokka1 {
	static String opiskelija;
	static int id;
	static int ika;
	String kylla;
	static String ei;
	private static Scanner input;


	public static void main(String[] args){

	input = new Scanner(System.in);


		System.out.println("Haluatko lisätä opiskelijoita? Vastaa kylla tai ei: " );
String kylla = input.nextLine();

if  (kylla == ("kylla")){
		System.out.println("anna nimi: ");
		input.next();
		System.out.println("Anna opiskelijan ID: ");
		input.next();
		System.out.println("Anna opiskelija ika: ");
		input.next();

input.nextLine(); }
else if (ei == ("ei")){
				System.out.println("Haluatko tarkastella olemassa olevia tietoja? vastaa kylla tai ei: ");
				input.nextLine();
			}
			if (kylla == ("kylla")) {
				System.out.println("Syötä opiskelijan ID: ");
				String id = input.next();
				System.out.println("opiskelijan: " + opiskelija + " ID on: " + id + "ja ikä on: " + ika);
			}

			else
				System.out.println("Ohjelma sulkeutuu");

Kun ajan koodin niin ainoa asia joka tapahtuu on että ohjelma kysyy ensimmäisen kysymyksen mutta vaikka siihen vastaa kyllä niin ohjelma hyppää viimeiselle riville eli kohtaan ohjelma sulkeutuu. Missäköhän voisi olla vika?

Metabolix [19.09.2017 17:02:42]

#

Tekstejä ei voi vertailla ==-operaattorilla, vaan tekstejä täytyy vertailla equals-metodilla (tai compareTo-metodilla).

String teksti = "jee";
if (teksti.equals("moi")) {
  // ...
}

Syynä on se, että teksti on olio (objekti) ja ==-vertailu tutkii silloin, ovatko tekstit täsmälleen sama yksilö. Asiaa voi ajatella niin, että kahdella paperilla lukee sama asia. Silloin ==-vertailu toteaa, että tekstit ovat eri papereilla (tulos on epätosi), kun taas equals-vertailu toteaa, että papereissa on silti sama teksti (tulos on tosi).

P.S. Käytä viesteissäsi kooditageja koodien merkitsemiseen, jotta ne näkyvät oikein (kuten yllä).

kukkakaali [19.09.2017 18:30:14]

#

Kiitos!Nyt pelittää.Tuli tosin uusia haasteita heti eteen ja koodi ei ole vielä valmis mutta avusta oli paljon hyötyä. Seuraavaksi olisi tarkoitus tallentaa tietoja muuttujiin tai jotain sinneppäin jotta saisin luotua jonkinlaisen opiskelija rekisterin, josta voisin hakea tietoa vaikka opiskelijan nimellä. Vielä en tiedä miten sen toteutan...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta