Gå til innhold

Teste om to tegn er like (boolean)?


Anbefalte innlegg

Skrevet (endret)

Hei! Jeg har fått en oppgave som lyder slik:

 

Du skal i dette programmet lage en klassemetode som tester om to tegn er like, identiske. Klassens navn skal være TegnLikhet og metodens navn Likhet.

De to tegnene leses inn fra en main-metode. Deretter kalles metoden Likhet som skal avgjøre om de to tegnene er like. Metoden skal enten returnere verdien true (dersom de to innleste tegn er like) eller verdien false (dersom de to innleste tegn er ulike). I figuren under har vi vist eksempel på innlesing til og utskrift fra programmet.

 

Jeg har følgende kode:

 

import javax.swing.JOptionPane;

public class TegnLikhet
{
  public static void main(String[] args)
  {

  //Variabeldeklarasjon

  char tegn1,tegn2;
  String inputTegn;


  //Leser inn
  inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. en");
  tegn1     = inputTegn.charAt(0);
  inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. to");
  tegn2     = inputTegn.charAt(0);


 System.exit( 0 );

  }
}

 

public static char Likhet(char inputTegn){
if (tegn1 == tegn2){
System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: true");
}
else {
System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: false");
}

 

Jeg får en feilmelding når jeg skal kompilere den siste koden:

 

class, interface, or enum expected

public static char Likhet(char inputTegn){

^(under char)

 

Neon som vet hva som er feil? Hvordan får jeg metoden til å returnere verdien false eller true?

 

Takker for svar!

Endret av apwr
Videoannonse
Annonse
Skrevet

Hvorfor kan vi ikke bare endre navn på hele Programmering > Java forumet, og kalle den "Programmering > Hjelp med (Java) skole oppgaver" istedenfor? Vil være litt mer forklarende kanskje..

Skrevet
Hvorfor kan vi ikke bare endre navn på hele Programmering > Java forumet, og kalle den "Programmering > Hjelp med (Java) skole oppgaver" istedenfor? Vil være litt mer forklarende kanskje..

7161885[/snapback]

Hva har dette med denne tråden å gjøre?

Her: https://www.diskusjon.no/index.php?showforum=179 kan du klage.

 

apwr: metoden Likhet() må være definert inne i klassen TegnLikhet, for meg ser det ut som at du har satt den utenfor klassen?

Skrevet

Takk, Nazgul!

 

Nå har jeg følgende kode:

 

import javax.swing.JOptionPane;

public class TegnLikhet
{
  public static void main(String[] args)
  {

  //Variabeldeklarasjon

  char tegn1,tegn2;
  String inputTegn;


  //Leser inn
  inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. en");
  tegn1     = inputTegn.charAt(0);
  inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. to");
  tegn2     = inputTegn.charAt(0);

  public static char Likhet(char inputTegn){
  if (tegn1 == tegn2){
  System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: true");
  }
  else {
  System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: false");
  }
}


 System.exit( 0 );

  }
}

 

Nå får jeg en annen feilmelding:

 

illegal start of expression

public static char Likhet(char inputTegn){

^

 

Vet du hvorfor dette ikke er lov?

Skrevet

Du kan ikke sette en metode inn i en metode! Fjern likhetmetoden fra main-metoden og sett den under. Dessuten, metodenavn skal helst ikke ha stor forbokstav (daarlig programmeringsskikk).

Skrevet

Ok, slik?

 

import javax.swing.JOptionPane;

public class TegnLikhet
{
  public static void main(String[] args)
  {

  //Variabeldeklarasjon

  char tegn1,tegn2;
  String inputTegn;


  //Leser inn
  inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. en");
  tegn1     = inputTegn.charAt(0);
  inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. to");
  tegn2     = inputTegn.charAt(0);

  }
}

public static char likhet(char inputTegn){
  if (tegn1 == tegn2){
  System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: true");
  }
  else {
  System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: false");
  }
}



 System.exit( 0 );

 

Jeg får nå en annen feilmelding:

 

class, interface, or enum expected

public static char likhet(char inputTegn){

^

 

Hva er feil?

Skrevet (endret)
import javax.swing.JOptionPane;

public class TegnLikhet
{
 public static void main(String[] args)
 {

 //Variabeldeklarasjon

 char tegn1,tegn2;
 String inputTegn;


 //Leser inn
 inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. en");
 tegn1     = inputTegn.charAt(0);
 inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. to");
 tegn2     = inputTegn.charAt(0);
 TegnLikhet.likhet(tegn1, tegn2);
 }

 public static char likhet(char tegn1, char tegn2){
 if (tegn1 == tegn2){
 System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: true");
 }
 else {
 System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: false");
 }
}
}

Endret av Nazgul
Skrevet

Det kan jo være en fordel å lese boken din da, istedenfor at vi skal kode for deg. Evt. kan du jo betale meg.

Dette er helt grunnleggende. Og du burde forstå forskjellen på klasser og metoder, og hvor de hører hjemme før du i det hele tatt gidder å prøve å kode noe som helst.

Skrevet (endret)

Har ikke noen bok. Koden du postet lar seg heller ikke kompilere. Fikk flere feilmeldinger. Det jeg lurer på er hvorfor jeg får denne feilmeldingen:

 

class, interface, or enum expected

public static char likhet(char inputTegn){

^

 

med denne koden:

 

import javax.swing.JOptionPane;

public class TegnLikhet
{
 public static void main(String[] args)
 {

 //Variabeldeklarasjon

 char tegn1,tegn2;
 String inputTegn;


 //Leser inn
 inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. en");
 tegn1     = inputTegn.charAt(0);
 inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. to");
 tegn2     = inputTegn.charAt(0);

 }
}

public static char likhet(char inputTegn){
 if (tegn1 == tegn2){
 System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: true");
 }
 else {
 System.out.println("Tegnene "+tegn1" " "og "+tegn2" " "er like: false");
 }
}



System.exit( 0 );

Endret av apwr
Skrevet (endret)
apwr: metoden Likhet() må være definert inne i klassen TegnLikhet, for meg ser det ut som at du har satt den utenfor klassen?

7162064[/snapback]

 

Koden min burde forresten funke nå, manglet en krøllparantes.

Endret av Nazgul
Skrevet

Fant den feilen jeg også, men det funker vel ikke enda?

Har litt problemer med min TextPad, så kan være der feilen ligger. Holder på å gå over til Eclipse da :thumbup:

Skrevet (endret)

Lær deg å programmere, som flere her har prøvd å si...

import javax.swing.JOptionPane;
public class TegnLikhet {
public static void main(String[] args) {

//Variabeldeklarasjon

char tegn1,tegn2;
String inputTegn;


//Leser inn
inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. en");
tegn1     = inputTegn.charAt(0);
inputTegn = JOptionPane.showInputDialog("Skriv inn tegn nr. to");
tegn2     = inputTegn.charAt(0);
TegnLikhet.likhet(tegn1, tegn2);
System.exit(0);

}

public static void likhet(char tegn1, char tegn2){
 if (tegn1 == tegn2){
 	System.out.println("Tegnene " + tegn1 + "og " + tegn2 + " er like");
 }
 else {
 	System.out.println("Tegnene " + tegn1 + " og " + tegn2 + " er ikke like");
 }
}
}

 

Her har jeg bare fikset koden slik at den fungerer som du vil, men jeg ville heller returnert en boolean fra den metoden istedenfor at metoden skriver ut det den gjør nå.

 

if erlik(tegn1,tegn2) System.out.print(tegn1 + " og " + tegn2 + " er like";
else System.out.print(tegn1 + " og " + tegn2 + " er ikke like";

Endret av drange
Skrevet

Har lurt på det samme selv. Hvorfor skriver folk i annenhver melding at man ikke må stille spørsmål på forumet. Er de dumme, eller er det ikke meningen at folk skal bruke forumet?

Har bare skrevet et par poster, men er jo ganske overrasket over holdningene det virker som endel har her inne...

Skrevet

en klasse i java kan inneholde mange ulike metoder. Og alle metoder må være innenfor en klasse!

Klikk for å se/fjerne innholdet nedenfor
import pakke.navn.Klasse; // først importeres eventuelle nødvenige klasser
import pakke.navn.* // denne importerer alle klassene som ligger i nevnte pakke.

//her starter vi deklarasjon av klassen:
public class MinKlasse{ 

//variabler som hvert objekt av klassen innehar:
private String fornavn;
private String etternavn;
privare int lønn;

//kontruktør: (man bestemmer selv eventuelle parametere, alt etter situasjonen
public MinKlasse(String fnavn, String enavn){
   fornavn = fnavn;
   etternavn = enavn;
   oppgiLønn(); // eksempel på metodekall i en konstruktør
}

//ulike metoder som klassen tilbyr følger:

//getters:
public String getFornavn(){ return fornavn; }
public String getEtternavn(){ return etternavn; }
public int getLønn(){ return lønn; }

//setters:
public void setFornavn(String navn){ fornavn = navn; }
public void setEtternavn(String navn){ etternavn = navn; }

public boolean setLønn(int nyLønn){
   if (nyLønn > 0) {
       lønn=nyLønn;
       return true;
   } else {
       System.out.println("Lønn kan ikke være negativ");
       return false;
   }
}

//en annen metode jeg lagde
//hele programmet kræsjer hvis man oppgit noe annet en tall (fordi jeg ikke bruker try/catch)
public void oppgiLønn(){
   String midlertidigStreng = JOptionPane.showInputDialog("Oppgi lønn");
   int lønn = Integer.parseInt( midlertidigStreng );
   boolean resultat = setLønn( lønn );
   if (resultat) {
       System.out.println("Lønnen ble vellykket satt til " + lønn + "kr.");
   } else { 
      System.out.println("Feil oppstod"); 
   }
}

}//her avslutter vi klassen

 

Da er en klasse oprettet, men den gir ikke mye mening uten en main-metode. Derfor lager vi en ny klasse, gjerne kaldt klient:

public class Klient{

public static void main(String args){

  //lager objekter av typen MinKlasse, paramtere samsvarer med konstruktøren 
 MinKlasse objekt1 = new MinKlasse("Ola","Nordmann");
 MinKlasse objekt2 = new MinKlasse("Kari,"Nordmann");

 String tmp1 = "apwr"
 String tmp2 = "drange"

 MinKlasse objekt3 = new MinKlasse( tmp1, tmp2 );

 //objekt som ikke er lagret i en variable følger:
 new MinKlasse("Onkel","Skrue");

}

 

Tilslutt: jeg har selvfølgelig ikke tatt meg tid til å sjekke om koden virker, da alle vet at en god programmerer er en lat programerer :p

I tillegg er jeg ganske trøtt nå, og jeg tipper koden inneholder noen slurvefeil. Men håper poenget mitt kom frem.

 

Kan jo lage psaudokude-klasse også:

Klikk for å se/fjerne innholdet nedenfor
public class Klassenavn{ 

/* eventuelle variabler */

/* konstruktør er greit å ha med */

 void metode{
    /* metode kropp */
 }

}//avslutter klassen her

Skrevet

Emnetittelen i denne tråden er ikke god nok, om ikke dette blir endret slik at det er lettere å forstå hva slags informasjon tråden omhandler vil denne bli stengt! En god emnetittel er en tittel som forklarer godt hva innholdet i posten din går ut på. En bruker bør kunne skaffe seg oversikt over hovedinnholdet i posten bare ut fra å lese tittelen. Vennligst forsøk å ha dette i tankene neste gang du starter en tråd, og orienter deg om hva vår nettikette sier om dårlig bruk av emnetitler.

 

Bruk p_edit.gif-knappen i første post for å endre emnetittelen.

 

(Dette innlegget vil bli fjernet ved endring av emnetittel. Vennligst ikke kommenter dette innlegget, men rapporter gjerne dette innlegget når tittelen er endret, så vil det bli fjernet.)

Skrevet

Kan jo være andre får bruk for det samme. Så hvorfor ikke gjøre tråden forståelig se de finner den?

 

" Program som sammenligner to tegn" ....

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...