Kleines Rechenprogramm über Eingabeaufforderung

mkoeni1

Erfahrenes Mitglied
Hallo Gemeinde,

ich möchte ein kl. Rechenprogramm schreibven, dass mir 2 int Zahlen und einen Operator einliest und dann mit diesen Eingaben rechnet.

zB. Eingabe a = 24 b = 12;
Operator: '+'


Ergebnis: 24 + 12 = 36;

Und das ganze dann am Monitor ausgerchnet ausgibt.


Folgendes hab ich schon programmiert:

Code:
  public class rechner {
  	   public static void main(String echo[]){
  
 		System.out.println("Es stehen folgende Rechenregel zur Verfügung:\n +, \n-, \n *, \n (geteilt), \n Modulo ");
  		System.out.println("Sie haben folgende 3 Werte eingegeben:");
  		
  		// Werte eingeben und zuweisen
  		 if(echo.length==3){
  		   for(int i=0;i<echo.length;i++)
  		   {
  				   System.out.println(echo[i]);
  		   }
  		 }
  		}
  }
ich möchte ohne irgendwelche packages und imports auskommen, da ich das nicht verstehe.


Hat jmd. einen Ansatz ich komme nicht weiter ?

mfg

trivial
 
Nunja ohne einen Import wirst du nicht weit kommen, da die Plattformunabhängigkeit von Java verhindert, dass ein Zugriff auf Tastatureingaben trivial ist.

Jedoch ist er trivial, wenn du die entsprechenden Klassen bzw. Pakete importierst, welche die entsprechende Funktionalität enthalten.

Hier mal ein wenig Code um eine Tastatureingabe auszulesen:
Code:
// paket io -> Eingabe/Ausgabe importieren ..
import java.io.*; 

class HelloWorld {
   
    // Eingabestrom
    static InputStreamReader input  = new InputStreamReader(System.in);

    // Eingabepuffer
    static BufferedReader keyboardInput = new BufferedReader(input);

  
    public static void main(String[] args) throws IOException
    {

        String eingabe;

        System.out.print("Gib was ein :");

        // hier wird auf Eingaben gewartet .. 
        eingabe = keyboardInput.readLine();

        System.out.println("Du hast " + eingabe + " eingegeben ..");
        
    }
}

Um nun mit den Eingaben zu rechnen, musst du die Strings in bspw. den Basistyp int umwandeln. Dazu kannst du eine Methode der Klasse Integer benutzen. Schau einfach mal in die Dokumentation .. ;)

Viel Spaß ..
 
Zuletzt bearbeitet:
Danke soweit,

ich denke so ähnlich habe ich es auch hinbekommen.

Code:
    import java.io.*;
   
   public class JCalcS {
   	   public static void main(String echo[]){
   
 		System.out.println("Es stehen folgende Rechenregel zur Verfuegung:\n +, \n-, \n *, \n (geteilt), \n Modulo ");
   
   
   
   		 // 1. Zahl einlesen und ausgeben:
   
   		System.out.println("Geben Sie die 1. Zahl ein:");
   
 		BufferedReader eingabe1 = new BufferedReader(new InputStreamReader(System.in));
   		String zeile1="";
   
   		try{  zeile1 = eingabe1.readLine();
   		}
   		catch(IOException e){ }
   		System.out.println("1. Zahl: --------> " + zeile1 + "\n");
   
   
   
   		// 2. Zahl einlesen und ausgeben:
   
   		System.out.println("Geben Sie die 2. Zahl ein:");
   
 		BufferedReader eingabe2 = new BufferedReader(new InputStreamReader(System.in));
   		String zeile2="";
   
   		try{  zeile2 = eingabe2.readLine();
   		}
   		catch(IOException e){ }
   		System.out.println("2. Zahl: --------> " + zeile2 + "\n");
   
   
   		// Operand einlesen und ausgeben:
   		System.out.println("Geben Sie den Operand ein:");
   
   		BufferedReader operand = new BufferedReader(new InputStreamReader(System.in));
   		String zeile3="";
   
   		try{  zeile3 = operand.readLine();
   		}
   		catch(IOException e){ }
   		System.out.println("Operand: --------> " + zeile3 + "\n");
   
   		switch(zeile3) {
 			case '+': System.out.println("Ergebniss: " +(zeile1+zeile2));
  					 break;
 			case '-': System.out.println("Ergebniss: " +(zeile1-zeile2));
  					 break;
 			case '*': System.out.println("Ergebniss: " +(zeile1*zeile2));
  					 break;
 			case '/': System.out.println("Ergebniss: " +(zeile1/zeile2));
  					 break;
 		/*	case 'mod': System.out.println("Ergebniss: " +(zeile1zeile2));
 					 break; */
   			default :  System.out.println("ungültige Option");
   
   	}

ein kleiner Tipp wie kann man aus einem String einen int machen kann, damit das switch-case Statement es frisst ?

Vielen Dank


mfg
trivial
 
Zuletzt bearbeitet:
Hallo MasterHimself und allen Anderen der Gemeinde,

ich habe es jetzt hinbekommen doch ich bin nicht zufrieden. Der Code sieht nun folgendermaßen aus:

Code:
  import java.io.*;
  
  public class JCalcS {
  	public static void main(String echo[]) {
  
  		System.out
 			 .println("Es stehen folgende Rechenregel zur Verfuegung: + , - , * , / , % ");
  
  		// 1. Zahl einlesen und ausgeben:
  
  		System.out.println("Geben Sie die 1. Zahl ein:");
  
  		BufferedReader eingabe1 = new BufferedReader(new InputStreamReader(
  				System.in));
  		String zeile1 = "";
  
  		try {
  			zeile1 = eingabe1.readLine();
  		} catch (IOException e) {
  		}
  		System.out.println("1. Zahl: --------> " + zeile1 + "\n");
  
  		
  				
 				// 2. Zahl einlesen und ausgeben:
  
  		System.out.println("Geben Sie die 2. Zahl ein:");
  
  		BufferedReader eingabe2 = new BufferedReader(new InputStreamReader(
  				System.in));
  		String zeile2 = "";
  
  		try {
  			zeile2 = eingabe2.readLine();
  		} catch (IOException e) {
  		}
  		System.out.println("2. Zahl: --------> " + zeile2 + "\n");
  
  		
  				
 				// Operand einlesen und ausgeben:
  		System.out.println("Geben Sie den Operand ein:");
  
  		BufferedReader operand = new BufferedReader(new InputStreamReader(
  				System.in));
  		
  		char zeichen = 0;
  
  		try {
  			
  			
  			zeichen = operand.readLine().trim().charAt(0);
  			
  		}
  		catch (IOException e) {
  		}
  		
  		
  		int a = 0, b = 0;
  		
  		try
  		{
  			a = Integer.parseInt(zeile1);
  			b = Integer.parseInt(zeile2);
  		}
  		catch(NumberFormatException e)
  		{
  			
  		}
  		System.out.println("Operand: --------> " + zeichen + "\n");
  
  		switch (zeichen) {
  		case '+':
 			System.out.println("Ergebniss: " + a + zeichen + b + " = " + (a + b));
  			break;
  		case '-':
 			System.out.println("Ergebniss: " + a + zeichen + b + " = " + (a - b));
  			break;
  		case '*':
 			System.out.println("Ergebniss: " + a + zeichen + b + " = " + (a * b));
  			break;
  		case '/':
 			System.out.println("Ergebniss: " + a + zeichen + b + " = " + (a / b));
  			break;
 		case '%': System.out.println("Ergebniss: " + a + zeichen + b + " = " + (a % b));
  			break;
  		default:
  			System.out.println("ungueltige Option");
  		}
  	}
  }


Jetzt möchte ich das Programm zB so starten:
javac JCalcS.java (compilieren)
java JCalcS 5 + 6 (auf der Kommandoebene eingeben)

Ich möchte also die Strings direkt irgendwie:
args[0] = 5
args[1] = +
args[2] = 6

dem Array zuweisen und dann das Ergebnis ausgeben..



mfg
trivial
 
Die Argumente sollten eigtl. automatisch in echo[] drin sein, wenn du das Programm mit Übergabeparametern startest.
 
Hallo teppi,

danke für den Hinweis :-(

Meine verbesserte Versiion:

Code:
  import java.lang.*;
  
  
  public class JCalckurz{
  	   public static void main(String args[])
  	   {
  
  
  
  		double z1 = 0;
  		int o =  0;
  		double z2 = 0;
  
  		try
  				{
 					z1 = Integer.parseInt(args[0]);
 		 		o = Integer.parseInt(args[1]);
 					z2 = Integer.parseInt(args[2]);
  				}
  		catch(NumberFormatException e)
  		{
  
  			 // Was könnte hier drinstehen ?
  
  		}
  
  		switch (o) {
  			case '+': System.out.println("Ergbnis: "+(z1+z2));
 					 break;
  
  			case '-': System.out.println("Ergbnis: " +(z1+z2));
 					 break;
  
  			case '*': System.out.println("Ergbnis: " +(z1+z2));
 					 break;
  
  			case '/': System.out.println("Ergbnis: " +(z1+z2));;
 					 break;
  
  			case '%': System.out.println("Ergbnis: " +(z1+z2));;
 					 break;
  
  			default : System.out.println("Ungueltige Option");
  			}
  		}
  
  }

allerdings kann mir einer sagen, wieso ich nach der Eingabeaufforderung von zB:
"java JCalckurz 3 + 4"
immer
"Ungueltige Option" zurück bekomme, und nicht 7 ?
Beim Compilieren mekkert er nicht rum.

Vielen Dank

mfg
trivial
 
Na ganz einfach, weil dein o keine Integer Zahl ist

Das Problem ist folgendes: Wenn du o = Integer.parseInt(args[1]); aurufst, erkennt der
compiler das args[1] gleich einem character ist, allerdings willst du einen int haben. Also
castet der compiler das Zeichen in eine Integerzahl (entspricht dem ASCII-Code des Zeichens). Also entweder du verwendest in deinem "case of" den ASCII Code der Operationszeichen, oder du machst o vom Typ char und liest ihn gleich korrekt rein. Ich hoffe das ich das jetzt verständlich erlärt hab.
also einfach ändern:

char o;
o = args[1].charAt(0);

Greetz
 
Zuletzt bearbeitet:
Wenn du o vom Typ char machst, kannst du allerdings auch kein switch mehr verwenden, denn das geht nur mit Integern.
 
Zurück