0

私はJavaの初心者なので、答えを厳しくしないでください。比較的難しいプログラムをコーディングして、Java のスキルを向上させようとしていますが、これで行き詰まってしまいました。

public class Szymon {

    public static void reply(String name) {

        switch(name){
        case "michal":name="Niedzwiedz!";
              break;
        default:System.out.println("wot ?");
        }

     }

    public static void greet(String name){
        System.out.printf("Elo %s co tam u ciebie ? \n",name);
    }


}

私はこれを書くのに何時間も費やしましたが、それほど多くはありませんが、そこから多くの経験を得ました.

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;

    public class Window<label> extends JFrame{
       private static final long serialVersionUID=1L;

       public Window(){
           super("Display of Input & Output");
           setSize(600,400);
           setDefaultCloseOperation(EXIT_ON_CLOSE);


           JPanel p= new JPanel();


           JButton b= new JButton("reply()");
           final JTextField tf=new JTextField();
           tf.setColumns(10);
           JButton b2= new JButton("greet()");
           final JTextField tf2=new JTextField();
           tf2.setColumns(10);
           final JLabel label=new JLabel();


           p.add(b);
           p.add(tf);
           p.add(b2);
           p.add(tf2);
           p.add(label);

           new Szymon();

           b.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent ae){
                  String tfVal = tf.getText();
                  Szymon.reply(tfVal);


               }
            });
           b2.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent ae){
                   String tf2Val=tf2.getText();
                      Szymon.greet(tf2Val);
               }
            });

           add(p);

       }





}
4

1 に答える 1

1

呼び出しているメソッド内から呼び出し元を変更しようとする代わりに、これは責任を拡張しすぎるという問題であり、代わりに、呼び出し元によって適用されるべき値を返します...

public class Szymon {

    public static String reply(String name) {
        switch(name){
        case "michal":name="Niedzwiedz!";
              break;
        default:name = "wot ?";
        }
        // Return the value to be applied...
        return name;
     }

    public static void greet(String name){
        System.out.printf("Elo %s co tam u ciebie ? \n",name);
    }
}

次に、メソッドを呼び出すときに、戻り値に変更を適用します...

b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent ae){
        String tfVal = tf.getText();
        String reVal = Szymon.reply(tfVal);
        label.setText(reValue);
    }
});

例えば...

于 2013-09-15T11:11:09.387 に答える