Gå til innhold

Anbefalte innlegg

Skrevet

Hei, holder på å lage et mobil arkiv og er nesten ferdig, sliter bare med en siste ting.

 

public void endreAbbonnement(String navn, int nyttNr, String nyType)
{
	boolean funnet = false;
	for(Abbonement a : abbonement)
	{
		String test = a.getNavn();
		if(test.equals(navn))
		{
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			funnet=true;
		}
		else
		{
			System.out.println("Finner ikke kunden.");
			break;
		}
	}
}

 

Hvis det ligger mer enn et nummer i arkivet så kan jeg ikke endre noen av dem.. Men om jeg bare har ett nummer i arkivet har jeg mulighet til å endre det.. Noen som kan se grunnen ut i fra dette eller trengere dere mer info?

Videoannonse
Annonse
Skrevet

			else
		{
			System.out.println("Finner ikke kunden.");
			break;
		}

 

Hvis 'test' ikke er lik 'navn' første gang, kommer else blokken og avbryter loopen. ;)

Skrevet

RavnTM pinpointet det på sitt første innlegg!

 

Prøv å ta ut hele else-blokken fra for-løkken gjør det om til en if som tester på !funnet. I tillegg kan du breake etter du har tatt funnet = true;

Skrevet

Takker for tips!

Nå har jeg gjort noen endringer, og nå kan jeg endre alle jeg legger inn. Men hva skriver jeg da på slutten for å få frem feilmeldingen Ingen kunder med dette navnet om den ikke finner noen?

 

public void endreAbbonnement(String navn, int nyttNr, String nyType)
{
	boolean funnet = false;
	for(Abbonement a : abbonement)
	{
		String test = a.getNavn();
		if(test.equals(navn))
		{
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			funnet=true;
			break;
		}
		if(test.equals(navn))
		{
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			funnet = true;
			break;
		}

	}
}

 

Vet ikke om det var slik du mente jeg skulle gjør det pgdx, om dette er feil vil du vise meg ved et eksempel? Hatt java i et par mnd og vet ikke alltid hva folk mener uten ett eksempel ;)

Skrevet
public void endreAbbonnement(String navn, int nyttNr, String nyType) {
	boolean funnet = false;
	for(Abbonement a : abbonement) {
		String test = a.getNavn();
		if(test.equals(navn)) {
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			funnet=true;
			break;
		}
	}
	if (!funnet) {
			System.out.println("Fant ikke " + navn + "!!!");
	}
}

Skrevet
public void endreAbbonnement(String navn, int nyttNr, String nyType) {
	boolean funnet = false;
	for(Abbonement a : abbonement) {
		String test = a.getNavn();
		if(test.equals(navn)) {
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			funnet=true;
			break;
		}
	}
	if (!funnet) {
			System.out.println("Fant ikke " + navn + "!!!");
	}
}

 

Når jeg gjor det på denne måten og endret et abbonement kom det: Fant ikke navnet.. Men endringene ble gjort når jeg tok printalle.. Know what to do?

Skrevet (endret)

import java.util.ArrayList;

public class Arkiv
{
private ArrayList<Abbonement> abbonement;


public Arkiv()
{
	abbonement = new ArrayList<Abbonement>();
}

public void nyttAbbonement(String navn, int telefon, String type)
{
Abbonement ny = new Abbonement(navn, telefon, type);
abbonement.add(ny);
}



public void printAlle()
{
	for(int i=0; i<abbonement.size(); i++)
{
	Abbonement k = abbonement.get(i);
	k.print();
}
}

public int antallAbbonement()
{
return abbonement.size();
}

public void endreAbbonnement(String navn, int nyttNr, String nyType)
{
	boolean funnet = false;
	for(Abbonement a : abbonement)
	{
		String test = a.getNavn();
		if(test.equals(navn))
		{
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			funnet=true;
			break;
		}
		if (!funnet) {
			System.out.println("Fant ikke " + navn + "!");
		}

	}
}


public void finnAbbonement(String navn)
{
	boolean funnet = false;
	int index = 0;
	while(index<abbonement.size()&&(funnet != true))
	{
		Abbonement a = abbonement.get(index);
		if(navn.equals(a.getNavn()))
		{
			a.print();
			funnet = true;
		}

		else
		{
			System.out.println("Ingen kunder med dette navnet");
			break;
		}
}
}


}

 

Hjalp dette? :) (Jobber på gruppe med topic starter)

Endret av itwiz
Skrevet (endret)

Tok meg den frihet å indentere klassen, og endre noen småting.

 

Din if (!funnet) hadde på mystisk vis rotet seg inn igjen i for-løkken. Endret ArrayList til List. Gjorde om for (int i ...) -> til foreach. Returnerer ting istedenfor void rundt omkring.

 

Endret noe greier inni finnAbbonement og endre, tror jeg.

 

import java.util.ArrayList;
import java.util.List;

public class Arkiv {
private List<Abbonement> abbonement;

public Arkiv() {
	abbonement = new ArrayList<Abbonement>();
}

public void nyttAbbonement(String navn, int telefon, String type) {
	abbonement.add(new Abbonement(navn, telefon, type));
}

public void printAlle() {
	for (Abbonement a : abbonement) {
		a.print();
	}
}

public int antallAbbonement() {
	return abbonement.size();
}

public Abbonement endreAbbonnement(String navn, int nyttNr, String nyType) {
	for (Abbonement a : abbonement) {
		String test = a.getNavn();
		if (test.equals(navn)) {
			a.endreNummer(nyttNr);
			a.endreType(nyType);
			return a;
		}
	}
	System.out.println("Fant ikke " + navn + "!");
	return null;
}

public Abbonement finnAbbonement(String navn) {
	for (Abbonement a : abbonement) {
		if (navn.equals(a.getNavn())) {
			a.print();
			return a;
		}
	}
	System.out.println("Ingen kunder med dette navnet");
	return null;
}
}

Endret av pgdx
Skrevet

Hei, har fått i oppgave å legge til noe i programmet..

Det skal ha mulighet for å legge inn et ubegrenset antall nummer til hvert abb.. Noen tips? Vet ikke helt hvordan jeg skal gå frem..

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...