目前我上了两节课。公共类Start和public class Frame_Main。
我通过GUI控制公共类Frame_Main,我输入内容并按下按钮后激活ActionListener。 然后输入变为控制台中的输出。
通过GUI输入之后我想调用Start类并检查输入是否与我准备的一些用户答案相同,但是我找不到一种方法来调用该函数来实现,Eclipse总是显示我当我尝试使用其中的函数创建公共void或类时出错。
开始:
public class Start {
public static void main(String[] args)
{
//deleted some variables to make the code look cleaner
auswahl = frame_main.auswahl;
//I want to call this while loop
while(run){
System.out.println("Welche Zahl ist vorhanden? \nDual, Hexa, Oktal oder Dezimal?");
if((auswahl).equals("Dual") || (auswahl).equals("dual"))
{
System.out.println("Dual wurde ausgewählt");
System.out.println("Dezimal: " + dezimalzahlen.dualUmrechnung());
System.out.println("Oktal: " + oktaldezimalzahlen.dualUmrechnung());
System.out.println("Hexa: " + hexadezimalzahlen.dualUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Hexa") || (auswahl).equals("hexa"))
{
System.out.println("Hexa wurde ausgewählt");
System.out.println("Dezimal: " + dezimalzahlen.hexadezimalUmrechnung());
System.out.println("Dual: " + dualzahlen.hexadezimalUmrechnung());
System.out.println("Oktal: " + oktaldezimalzahlen.hexadezimalUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Oktal") || (auswahl).equals("oktal"))
{
System.out.println("Oktal wurde ausgewählt");
System.out.println("Dual: " + dualzahlen.oktaldezimalUmrechnung());
System.out.println("Dezimal: " + dezimalzahlen.oktaldezimalUmrechnung());
System.out.println("Hexa: " + hexadezimalzahlen.oktaldezimalUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Dezimal") || (auswahl).equals("dezimal") )
{
System.out.println("Dezimal wurde ausgewählt");
System.out.println("Dual: " + dualzahlen.dezimalUmrechnung());
System.out.println("Oktal: " + oktaldezimalzahlen.dezimalUmrechnung());
System.out.println("Hexa: " + hexadezimalzahlen.dezimalUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Exit") || (auswahl).equals("exit"))
{
System.out.println("Das Programm wurde beendet.");
run = false;
}
else
{
System.out.println("Keine Übereinstimmung, bitte erneut versuchen");
}
}
}
}
}
}
}
}
Frame_Main:
public String auswahl = "";
public void createTextField()
{
jbutton1_go.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
if (jtextfield1_bezeichnung.getText().length() <= 0)
{
System.out.println("Error 404: Kein Zahlensystem wurde angegeben");
}
else
{
System.out.println ("Vorhandenes Zahlensystem: " + jtextfield1_bezeichnung.getText());
auswahl = jtextfield1_bezeichnung.getText();
//after getting the input value I would like to call the while loop
}
if(jtextfield1_zahl.getText().length() <= 0)
{
System.out.println("Error 404: Keine Zahl wurde angegeben");
}
else
{
System.out.println ("Vorhandene Zahl: " + jtextfield1_zahl.getText());
}
}
});
}
答案 0 :(得分:4)
为您的支票创建一个方法,将它们全部放在main中是没有意义的。如果您创建静态方法,可以通过以下方式调用它:
Start.check(auswahl);
如果没有,您应该实例化Start。这是你的开始课程:
public class Start {
public static void main(String[] args)
{
//deleted some variables to make the code look cleaner
auswahl = frame_main.auswahl;
}
public static check(String auswahl) {
//I want to call this while loop
while(run){
System.out.println("Welche Zahl ist vorhanden? \nDual, Hexa, Oktal oder Dezimal?");
if((auswahl).equals("Dual") || (auswahl).equals("dual"))
{
System.out.println("Dual wurde ausgewählt");
System.out.println("Dezimal: " + dezimalzahlen.dualUmrechnung());
System.out.println("Oktal: " + oktaldezimalzahlen.dualUmrechnung());
System.out.println("Hexa: " + hexadezimalzahlen.dualUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Hexa") || (auswahl).equals("hexa"))
{
System.out.println("Hexa wurde ausgewählt");
System.out.println("Dezimal: " + dezimalzahlen.hexadezimalUmrechnung());
System.out.println("Dual: " + dualzahlen.hexadezimalUmrechnung());
System.out.println("Oktal: " + oktaldezimalzahlen.hexadezimalUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Oktal") || (auswahl).equals("oktal"))
{
System.out.println("Oktal wurde ausgewählt");
System.out.println("Dual: " + dualzahlen.oktaldezimalUmrechnung());
System.out.println("Dezimal: " + dezimalzahlen.oktaldezimalUmrechnung());
System.out.println("Hexa: " + hexadezimalzahlen.oktaldezimalUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Dezimal") || (auswahl).equals("dezimal") )
{
System.out.println("Dezimal wurde ausgewählt");
System.out.println("Dual: " + dualzahlen.dezimalUmrechnung());
System.out.println("Oktal: " + oktaldezimalzahlen.dezimalUmrechnung());
System.out.println("Hexa: " + hexadezimalzahlen.dezimalUmrechnung());
System.out.println("-------------------------");
}
else
{
if((auswahl).equals("Exit") || (auswahl).equals("exit"))
{
System.out.println("Das Programm wurde beendet.");
run = false;
}
else
{
System.out.println("Keine Übereinstimmung, bitte erneut versuchen");
}
}
}
}
}
}
}
}
答案 1 :(得分:0)
我认为前往此处的方式将被称为重构
您有一个控制台应用程序,main()
可将输出打印到System.out
。
现在你想要使用GUI而无法重用你的代码,因为System.out
在GUI应用程序中没有位置。
现在,这两者有什么共同之处?
他们共享一种方法,您可以在其中输入一些数据,然后打印出一些结果。
考虑这种方法:
public String showUmrechnungen(String auswahl, String zahl) {
StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter();
//Your code from main(). Replace System.out.println with out.println()
out.flush();
return sw.toString();
}
你可以在你情境的两个中使用它:
public static void main(String[] args) {
Start instance = new Start();
while(running) {
//Get the input
String zahl = readZahl();
String auswahl = readAuswahl();
System.out.println(instance.showUmrechnungen(auswahl, zahl));
}
}
在你的Swing-App中:
public void actionPerformed (ActionEvent e)
{
Start instance = new Start();
JOptionPane.showMessageDialog(Frame_Main.this,
instance.showUmrechnungen(jtextfield1_bezeichnung.getText(),
jtextfield1_zahl.getText()));
}
原因,这只是如何攻击这种情况的一般想法。在您的情况下,您必须考虑输入,例如&#34;退出&#34;以及如何处理所以也许最好传递一个PrintStream
并返回一个boolean for continue或不:
public boolean showUmrechnungen(String auswahl, String zahl, PrintStream out) {
}