Skip to content

Instantly share code, notes, and snippets.

@prskr
Last active December 24, 2019 11:28
Show Gist options
  • Select an option

  • Save prskr/1efb934ca0f98b4b1398 to your computer and use it in GitHub Desktop.

Select an option

Save prskr/1efb934ca0f98b4b1398 to your computer and use it in GitHub Desktop.
Easy IO util methods for beginners
package de.fhro.inf.prg2.common;
import javax.swing.*;
/**
* Helper-Klasse fuer einfache IO Operationen
*
* @author Peter Kurfer
* @version 0.0.1
* @since SS2016
*/
public class IOHelper {
private static final String defaultHeader = "IOHelper";
/**
* Lesen eines Strings mit Default-Message und Default-Title
*
* @return eingegebener String
*/
public static String readString() {
return readString("Bitte gib eine Zeichenkette ein:");
}
/**
* Lesen eines Strings mit eigener Message und Default-Title
*
* @param message Message welche im Dialog angezeigt wird
* @return eingegebener String
*/
public static String readString(String message) {
return readString(message, defaultHeader);
}
/**
* Lesen eines String mit eigener Message und eigenem Title
*
* @param message Message welche im Dialog angezeigt wird
* @param title Title des Dialogs
* @return eingegebener String
*/
public static String readString(String message, String title) {
return read(message, title, input -> input);
}
/**
* Lesen eines Doubles mit Default-Message und Default-Title
*
* @return eingegebener Double
*/
public static double readDouble() {
return readDouble("Bitte gib eine Kommazahl ein:");
}
/**
* Lesen eines Doubles mit eigener Message und Default-Title
*
* @param message Message welche im Dialog angezeigt wird
* @return eingegebener Double
*/
public static double readDouble(String message) {
return readDouble(message, defaultHeader);
}
/**
* Lesen eines Doubles mit eigener Message und eigenem Title
*
* @param message Message welche im Dialog angezeigt wird
* @param title Title des Dialogs
* @return eingegebener Double
*/
public static double readDouble(String message, String title) {
return read(message, title, Double::parseDouble);
}
/**
* Lesen eines Integers mit Default-Message und Default-Title
*
* @return gelesener Integer
*/
public static int readInt() {
return readInt("Bitte gib eine ganze Zahl ein:");
}
/**
* Lesen eines Integers mit eigener Message und Default-Title
*
* @param message Message welche im Dialog angezeigt wird
* @return gelesener Integer
*/
public static int readInt(String message) {
return readInt(message, defaultHeader);
}
/**
* Lesen eines Integers mit eigener Message und eigenem Title
*
* @param message Message welche im Dialog angezeigt wird
* @param title Title des Dialogs
* @return gelesener Integer
*/
public static int readInt(String message, String title) {
return read(message, title, Integer::parseInt);
}
/**
* Anzeigen einer String-Message mit Default-Title
*
* @param message Message welche angezeigt werden soll
*/
public static void showStringMessage(String message) {
showStringMessage(message, defaultHeader);
}
/**
* Anzeigen einer String-Message mit eigenem Title
*
* @param message Message welche angezeigt werden soll
* @param title Title des Dialogs
*/
public static void showStringMessage(String message, String title) {
show(message, title);
}
/**
* Anzeigen einer Double-Message mit Default-Title
*
* @param message Message welche angezeigt werden soll
*/
public static void showDoubleMessage(double message) {
showDoubleMessage(message, defaultHeader);
}
/**
* Anzeigen einer Double-Message mit eigenem Title
*
* @param message Message welche angezeigt werden soll
* @param title Title des Dialogs
*/
public static void showDoubleMessage(double message, String title) {
show(message, title);
}
/**
* Anzeigen einer Integer-Message mit Default-Title
*
* @param message Message welche angezeigt werden soll
*/
public static void showIntMessage(int message) {
showIntMessage(message, defaultHeader);
}
/**
* Anzeigen einer Integer-Message mit eigenem Title
*
* @param message Message welche angezeigt werden soll
* @param title Title des Dialogs
*/
public static void showIntMessage(int message, String title) {
show(message, title);
}
/**
* Wrapper-Methode um statische Typisierung bei Ausgaben zu simulieren
*
* @param message Message welche angezeigt wird
* @param title Title des Dialogs
*/
private static void show(Object message, String title) {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame, message, title, JOptionPane.INFORMATION_MESSAGE);
}
/**
* Methode welche das tatsaechliche Lesen vom InputDialog uebernimmt
*
* @param message Message welche angezeigt wird
* @param title Title des Dialogs
* @param converter Konverter welcher den Input in die benoetigten Typ umwandelt
* @param <T> Typ welcher gelesen werden soll
* @return gelesener Wert
*/
private static <T> T read(String message, String title, InputConverter<T> converter) {
boolean successfullyRead = false;
T result = null;
JFrame frame = new JFrame();
do {
String input = JOptionPane.showInputDialog(frame, message, title, JOptionPane.QUESTION_MESSAGE);
try {
result = converter.convert(input);
successfullyRead = true;
} catch (Exception e) {
}
} while (!successfullyRead);
return result;
}
/**
* Helper-Interface zur Vermeidung von Code-Duplikaten beim Lesen
*
* @param <T> Typ in welche konvertiert werden soll
*/
private interface InputConverter<T> {
T convert(String input) throws Exception;
}
}
package de.fhro.inf.prg2.kotlin.common
import javax.swing.JFrame
import javax.swing.JOptionPane
/**
* Created by baez on 25.03.16.
*/
const private val defaultHeader : String = "IOHelper"
fun readString(message: String = "Bitte gib eine Zeichenkette ein:", title: String = defaultHeader) : String {
return read(message, title, "", { it })
}
fun readDouble(message: String = "Bitte gib eine Kommazahl ein:", title: String = defaultHeader) : Double {
return read(message, title, 0.0, { it.toDouble() })
}
fun readInt(message: String = "Bitte gib eine ganze Zahl ein:", title: String = defaultHeader) : Int {
return read(message, title, 0, { it.toInt() })
}
fun showStringMessage(message: String, title: String = defaultHeader) {
show(message, title)
}
fun showDoubleMessage(message: Double, title: String = defaultHeader){
show(message, title)
}
fun showIntMessage(message: Int, title: String = defaultHeader){
show(message, title)
}
private fun show(message : Any, title: String){
val frame = JFrame()
JOptionPane.showMessageDialog(frame, message, title, JOptionPane.INFORMATION_MESSAGE)
}
private fun <T> read(message: String, title: String, default: T, converter: (input: String) -> T) : T {
val frame = JFrame()
do{
val input = JOptionPane.showInputDialog(frame, message, title, JOptionPane.QUESTION_MESSAGE)
try{
return converter(input)
}catch(e : Exception){
}
}while(true)
return default;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment