Konsolenanwendung



  • hi,

    also ich wollte eine Konsolenanwendung schreiben, die immer wieder abfragt, ob ein gewisser String eingegeben wurde (z.B. die Strings "TueDies" und "TueDas").

    Wenn nicht, soll nichts passieren, wenn z.B. TueDies eingegeben wurde, soll z.B. ausgegeben werden : "hallo", bei tuedas was anderes usw.

    Ich habe ein Problem mit der Endlosschleife für die Abfrage:

    //...
    
    String ^str;
    
    while (true)
    	{	
    		str = Console::ReadLine();
    
    		if (str = "Betrag()")
    		{
    			Console::WriteLine("Betrag des Vektors: " + vektor1->Betrag);
    			str = "";
    		}
    
    		else if (str = "Close()")
    		{
    			str = "";
    		}
    
    	}
    
    //...
    

    Könnt ihr mir helfen?



  • Und was ist Dein Problem?



  • es funktioniert nicht.

    es kommt immmer wieder "Vektor beträgt (0,0,0)" wenn ich enter drücke. Ich habs jetzt mal so gemacht:

    // Vektorenrechnung.cpp: Hauptprojektdatei.
    
    #include "stdafx.h"
    #include "Vector3.h"
    
    using namespace System;
    using namespace std;
    
    bool fehler = false;
    
    int main()
    {	
    	Vector3::Vector3 ^vektor1 = gcnew Vector3::Vector3(0, 0, 0);
    
    	String ^x, ^y, ^z;
    	String ^str;
    
        Console::WriteLine("Vektorenrechnung\nBitte geben sie einen dreidimensionalen Vektor ein:");
    
    	Console::WriteLine("x: "); 
    	x = Console::ReadLine();
    
    	Console::WriteLine("y: "); 
    	y = Console::ReadLine();
    
    	Console::WriteLine("z: "); 
    	z = Console::ReadLine();
    
    	try
    	{
    		Convert::ToDouble(x);
    		Convert::ToDouble(y);
    		Convert::ToDouble(z);
    
                    vektor1->Refresh(x, y, z);
    
    	}
    	catch(Exception ^e)
    	{
    		Console::WriteLine("Fehler!! Bitte verwenden Sie nur Zahlen wie: 3, 3.5 etc.");
    		str = "";
    		fehler = false;
    		x = "";
    		y = "";
    		z = "";
    		main();
    		return 0;
    	}
    
    		Console::WriteLine("Vector3: (" + x + ", " + y + ", " + z + ")");
    
    		//
    		//
    		str = Console::ReadLine();
    
    		if (str == "Betrag()")
    		{
    			Console::WriteLine("Betrag des Vektors: " + vektor1->Betrag);
    		}
    		Console::ReadLine();
    
        return 0;
    }
    

    und jedesmal kommt dann bei vektor1->Refresh(x,y,z): "Konvertierung von System::String^ in Double nicht möglich"

    Dabei habe ich die Strings doch eigenhändig in Double-Werte konvertiert!??



  • Player894 schrieb:

    Dabei habe ich die Strings doch eigenhändig in Double-Werte konvertiert!??

    Aber das Ergebnis dieser Konvertierung hast du sofort weggeworfen. Convert::ToDouble ändert nicht auf magische Art und Weise den Typ seines Arguments, sondern gibt das Ergebnis der Konvertierung zurück. Da du diesen Rückgabewert aber keiner passenden Variablen zuweist, ist er weg.



  • Natürlich hat ein else-Zweig bei dem Code keine Chance ..

    Player894 schrieb:

    if (str = "Betrag()")
    		{
    			Console::WriteLine("Betrag des Vektors: " + vektor1->Betrag);
    			str = "";
    		}
    
    		else if (str = "Close()")
    		{
    			str = "";
    		}
    
    //...
    

Anmelden zum Antworten