C# Methode erfordert Rückgabetyp

3 Antworten

    public **void** Target (Image img, int points, int interval)
{
    this.points = points;
    this.img=img;
    time.interval=interval;
    time.Tick +=new EventHandler(time_Tick);
    time.Start();
}

in eine Methode gibtst du werte zurück. Das heist wenn du in einem Program mit zahlen arbeitest und eine lange rechnung hast die immer wieder vorkommt must du sie jedes mal schreiben. wenn du aber eine methode nimmst kannst sagen das sie in deinem Programm immer wieder die Variable nimmt . void gibt nichts zurück :)

lg

-fera-

PS sollte gehn habs aber nicht getestet kann ich dann später machen hab leider grad ziemlich viel um die ohren :S

Nein, public Target(....) ist der Konstruktor!!!!!

0
@CarolaA

Sorry hatte grad keinen überblick :S ich schau mir das am abend genauer an wenn das problem noch nicht gelöst ist :S

0
@feralun

Ok.

Ich habe den Blick schon dafür! (Bin beruflich Softwareentwicklerin und muss mich oft auf die Schnelle in andere Codes reinlesen! =D )

0
@CarolaA

Ah ok :D

ja naja ich brauchs auch in der arbeit aber wir steigen erst gerade darauf um dementsprechend brauch ich noch ein bissl xD

aber es wird langsam :D

0
@feralun

@feralun: Bei Fragen einfach bei mir melden! =)

0
@CarolaA

Oh danke :D

Werde ich :P Derzeit komme ich noch klar nur wenn ich was auf die schnelle machen muss bekomm ich immer stress xD und dann verhau ichs meistens xD

1
@feralun

Kommt mir total bekannt vor. Du kannst dir gar nicht vorstellen, wie oft ich am Anfang meinen eigenen Code nochmal ausbessern habe müssen! =)

0

Eine Funktion muss einen Rückgabetyp angeben. Der gibt an, von welchem Typ das Ergebnis der Funktion ist. Ein Stück weiter unten hast du ja diese Funktion:

void  time_Tick(object sender, EventArgs e)

"void" ist dabei der Rückgabetyp und sagt aus, dass die Funktion kein Ergebnis zurückgibt. Wenn das Ergebnis ein Integer ist, müsste dort eben "int" stehen, wenn es ein String ist, müsste dort "String" stehen, usw.

Wenn du da also eine Funktion machst, müsstest du einen Rückgabetyp einfügen:

public **void** Target (Image img, int points, int interval)

In dem Fall noch der Hinweis: Meines Wissens nach, schreibt man Methoden-Namen in der Regel klein.

Da die "Funktion" so heißt wie deine Klasse, würde ich aber mal spontan vermuten, dass es sich dabei um den Konstruktor der Klasse handeln soll. Falls das der Fall ist, gehört da kein Rückgabetyp hin. Stattdessen ist wichtig, dass Klasse und Konstruktor den gleichen Namen haben. Das heißt: Entweder du schreibst in beiden Fällen "Target" oder in beiden Fällen "target".

  1. Variablen von Methoden und Variablen der Klassen sollten keinen gleichen Namen haben => Verwechslungsgefahr

  2. Beim EventHandler fehlt dir auch noch eine Angabe

  3. Wo rufst du den

Konstruktor Target(image, 10, 10) auf (können auch andere Werte sein, dient nur als Beispiel)

4.Klassenname und Konstruktorname müssen komplett gleich geschrieben werden, dass heißt

class Target und public Target(....)

oder

class target und public target(...)

MfG CarolaA.

Bei weiteren Fragen kannst du dich ruhig bei mir melden! (beruflich arbeite ich als Softwareentwicklerin im Bereich C#)

0
  • zu 1. @WhiteRainbow: In diesem Fall meinte CarolaA die Parameter. Ansonsten hat sie recht, lokale Variablen (nicht nur Methodenvariablen; schließlich können Variablen auch innerhalb von bspw. Schleifen erstellt werden)/Parameter sollten nicht die gleiche Bezeichnung haben wie Klassen-/ statische Variablen.
  • zu 2. Welche Angabe soll denn fehlen? Das ist valider Code (den Eventhandler betreffend)
  • zu 3. Der Konstruktor kann auch von außerhalb der Klasse aufgerufen werden
  • zu 4. Das sollte die Lösung des Problems sein.
2

Unity 5 Scrollbar bzw. Healthbar C#?

Ich habe ein Problem ich möchte eine Lebens anzeige machen aber sie funktioniert nicht richtig, wenn man den Gegner trifft wird nichts an der Anzeige abgezogen aber wenn er tot ist dann ist die Anzeige auch leer. Hier der Code :

using UnityEngine; using UnityEngine.Networking; using System.Collections; using UnityEngine.UI;

public class Player : NetworkBehaviour {

[SyncVar]
private bool _isDead = false;
public bool isDead
{
    get { return _isDead; }
    protected set { _isDead = value; }
}

[SerializeField]
private int maxHealth = 100;

[SyncVar]
private int currentHealth;
public Scrollbar healthbar;

[SerializeField]
private Behaviour[] disableOnDeath;
private bool[] wasEnabled;

public void Setup()
{
    wasEnabled = new bool[disableOnDeath.Length];
    for (int i = 0; i < wasEnabled.Length; i++)
    {
        wasEnabled[i] = disableOnDeath[i].enabled;
    }

    SetDefaults();
}

[ClientRpc]
public void RpcTakeDamage(int _amount)
{
    if (isDead)
        return;

    currentHealth -= _amount;

    healthbar.size = currentHealth;

    Debug.Log(transform.name + " now has " + currentHealth + " health.");

    if (currentHealth <= 0)
    {
        Die();
    }
}

private void Die()
{
    isDead = true;

    for (int i = 0; i < disableOnDeath.Length; i++)
    {
        disableOnDeath[i].enabled = false;
    }

    Collider _col = GetComponent<Collider>();
    if (_col != null)
        _col.enabled = false;

    Debug.Log(transform.name + " is DEAD!");

    StartCoroutine(Respawn());
}

private IEnumerator Respawn()
{
    yield return new WaitForSeconds(GameManager.instance.matchSettings.respawnTime);

    SetDefaults();
    Transform _spawnPoint = NetworkManager.singleton.GetStartPosition();
    transform.position = _spawnPoint.position;
    transform.rotation = _spawnPoint.rotation;

    Debug.Log(transform.name + " respawned.");
}

public void SetDefaults()
{
    isDead = false;

    currentHealth = maxHealth;

    for (int i = 0; i < disableOnDeath.Length; i++)
    {
        disableOnDeath[i].enabled = wasEnabled[i];
    }

    Collider _col = GetComponent<Collider>();
    if (_col != null)
        _col.enabled = true;

}

}

würde mich sehr über eine schnelle und hilfreiche Antwort freuen

...zur Frage

Wie mehrere Methoden in Java

Hallo zusammen,

und zwar lern ich gerade Java und hab mir en Programm geschrieben, dass einen Roulett-Tisch simulieren sollte. jetzt kahm mein ausbilder her und hat mir lauter Methoden über mein Programm geschriebn, jetzt wei´ß ich nicht, wie ich das machen muss oder was ich da überhaupst machen soll, kann mir jemand helfen ???

Entwicklungsumgebung: Eclipse

import java.util.*;

public class Roulette {

 private static boolean askForHighRisk(){
      return false;
  }
  private static boolean askForQuit(){
      return true;
  }
  private static boolean askBetOnEven(){
      return true;
  }
  private static int askSetOnNumber(){
    return 0;

  }
  private static int askForStake(int minLimit, int maxLimit){
      return 0;
  }
  private static int rollBall() {
      return 1;
  }  

  public static void main(String[] args) {

  System.out.printf("Bitte gib dein Startgeld zwischen 10€ und 10.000€ ein (in 10€ Schritten)!!!\n");

  Scanner startMoney = new Scanner (System.in);
  int  startmoney = startMoney.nextInt();
  int modulo = startmoney%10;
  int realstartmoney = 0;
  int zahlintager;
  String A= "A";
  String B= "B";
  String ja = "ja";
  String nein = "nein";


  //set the startmoney, only 10€ steps between 10 -10 000 
  if (startmoney > 10000) {
    startmoney =10000;
  }

  if (startmoney != 0) {
    realstartmoney = startmoney-modulo;
  }
  else {
    realstartmoney = startmoney;
  }

System.out.println("Sie haben jetzt " + realstartmoney + "€ auf ihrem Konto");

//loop till no money
  while (realstartmoney >0) {

    //set random int number
    int generator = (int) (Math.random()*36);      



  System.out.println("Wollen sie mit einer \"A (hohen)\" oder einer \"B (niedrigen)\" Chance spielen?");



  String choiceAorB = new String();
  Scanner AorB = new Scanner(System.in);
  choiceAorB = AorB.next();
  int geradeungerade = generator % 2;       

  if (choiceAorB.contentEquals(A)) {
    System.out.println("wollen sie auf \"A (gerade)\" oder \"B (ungerade)\"setzen");


    String choiceBorA = new String();
    Scanner BorA = new Scanner(System.in);
    choiceBorA = BorA.next();

    System.out.println("Wie viel wollen sie setzen????");

    Scanner setMoney = new Scanner(System.in);
    int nosetmoney = setMoney.nextInt();
    int setmoney = 0;
    int modulo2 = nosetmoney%10;

    if (modulo2 != 0) {
      setmoney = nosetmoney-modulo2;
    }
    else {
      setmoney = nosetmoney;
    }

    if (setmoney < 10) {
      System.out.println("Dein Einsatz wurde auf 10€ gesetzt");
      setmoney =10;
    }
          if (setmoney> realstartmoney) {
            System.out.println("So viel Geld h
...zur Frage

Wiso funktioniert das bluej schnick schnack schnuck programm nicht

habe diesen quellcode erstellt:

import java.util.Random; public class STEIN { private int schere; private int stein; private int papier; private int j; private int i; private int S1; private int S2;

public STEIN()
{

    i=0;
    j=0;
    schere=1;
    papier=2;
    stein=3;
}


public void SPIEl()
{
  Random zufall= new Random();

  while (S1==S2)
  {
   int S1= zufall.nextInt(3);
     int S2= zufall.nextInt(3);
  }


  while ( S1!=S2||i<3 ||j<3)
   {
     int S1= zufall.nextInt(3);
     int S2= zufall.nextInt(3);


     if(S1==2)
      {
          if(S2==3)
        {i=i+1;
        }
        else 
        {j=j+1;
        }
    }
        if(S1==3)
        {if (S2==2)
            {j=j+1;
            }
            else 
            { i=i+1;
            }
        }
     else 
     {if (S2==2)
         {i=i+1;
            }
     else 
     j=j+1;
    }

    }
    if (i==3)
     {System.out.println("Spieler 1 gewinnt");
     }
    else if (j==3)
    {System.out.println("Spieler 2 gewinnt");
    }

    } 
}
...zur Frage

Java Dreieck aus Sternen in eigener Methode?

Hallo,

ich hab die Aufgabe in Java ein Dreieck aus Sternen auszugeben und dass in einer eigenen Methode. Da ich keine Ahnung habe wie ich das in eine Methode + der main-Methode machen kann hab ich es erstmal nur in der main-Methode gemacht:

package übung6;

import java.util.Scanner;

public class DreieckausSternen {

private static Scanner scan;

public static void main (String[] args){

scan = new Scanner (System.in);
System.out.print("Geben sie die Anzahl der Zeilen an: ");
int x = scan.nextInt();

int leer = x-1;

for (int i = 1;i <= x;i++){
    for (int n = 1;n <= leer;n++){
        System.out.print(" ");
    }
    leer--;
    
    for (int n = 1;n <= i ;n++)
        System.out.print("*"+" ");
        System.out.println();
}

}

}

Kann mir jemand da weiterhelfen?

EDIT:

Die Aufgabenstellung:

Schreiben Sie eine Methode, die ein Dreieck aus Sternen ausgibt. Die Methode soll ein Argument entgegennehmen, das festlegt, wie viele Zeilen ausgegeben werden sollen. In der rechten Abbildung sehen Sie eine Beispielausgabe für 5 Zeilen. Beachten Sie bitte dass zwischen den einzelnen Sternen ein Leerzeichen ausgegeben wird.

...zur Frage

C# Problem mit auslesen einer XML Datei

Guten Morgen,

ich arbeite gerade an einem Projekt das mit XML Dateien arbeiten soll,

nun komm ich einfach nicht drauf wie ich diese Auslesen soll, alle Anleitungen sind nur für

    <root>
        <child1/>
        <child2/>
        <child3/>
    </root>

Mein Aufbau ist allerdings

<Persons>
  <Person>
    <Name>Hans Sarpei</Name>
    <Sex>Male</Sex>
    <DOB>01.01.1970</DOB>
    <Status>Unknown</Status>
    <Grades>
      <Grade>Realschule</Grade>
      <Grade>Buisness School</Grade>
    </Grades>
    <Employee>False</Employee>
    <Employed>None</Employed>
    <Function>None</Function>
    <CriminalRecords>
      <CriminalRecord>None</CriminalRecord>
    </CriminalRecords>
  </Person>
</Persons>

wie kann ich eine solche XML auslesen ?

PS: die Person Klasse sieht folgendermaßen aus.

class Person
    {
        public string Name {get;set;}
        public string Sex { get; set; }
        public string DOB { get; set; }
        public string Status { get; set; }
        public List<string> Grades { get; set; }
        public bool Employee { get; set; }
        public string Employed { get; set; }
        public string Function { get; set; }
        public List<string> CrimRec { get; set; }
    }
...zur Frage

C# schleife funktioniert nicht?

        Circle kreisX = new Circle();
        Console.WriteLine("Bitte geben sie die X Cordinate an: ");
        kreisX.XCordinate = Convert.ToInt16(Console.ReadLine());
       
        Circle kreisY = new Circle();
        Console.WriteLine("Bitte geben sie die Y Cordinate an: ");
        kreisY.YCordinate = Convert.ToInt16(Console.ReadLine());
     
        Circle kreis = new Circle();
        do{
            Console.WriteLine("Bitte geben sie den Radius des Kreises an: ");
            kreis.Radius = Convert.ToInt16(Console.ReadLine());
        }while(kreis.Radius < 0);
      
        Console.WriteLine("Radius: {0}, X Cordinate: {1}, Y Cordinate: {2}", kreis.Radius, kreisX.XCordinate, kreisY.YCordinate);
        Console.ReadLine();

Die do -while schleife will nicht funktionieren und zwar soll der Programm teil wiederholt werden wenn das Objekt kreis.Radius den wert 0 erhält warum funktioniert es nicht? Die schleife wird ignoriert...wenn ich schreib (kreis.Radius > 0) funktioniert sie aber anders herum nicht. Hier ist noch der Programmteil der anderen Klasse:

    private double _XCordinate;
    public double XCordinate
    {
        get { return _XCordinate; }
        set { _XCordinate = value; }
    }

    private double _YCordinate;
    public double YCordinate
    {
        get { return _YCordinate;}
        set { _YCordinate = value;}
    }

    private int _Radius;
    public int Radius
    {
        get { return _Radius;}
        set
        {
            if (value >= 0)
                _Radius = value;
            else
                Console.WriteLine("Unzulässiger negativer Wert: {0}", value);
        }
...zur Frage

Was möchtest Du wissen?