import java.awt.*; import java.awt.event.*; import java.applet.*; public class Projekt extends Applet{ TextField tf1; TextField tf2; TextArea ta; int servast_eemale = 4; public void init(){ //Panel paneel3=new Panel(); tf1=new TextField(); tf1.setBackground(Color.green); tf2=new TextField(); tf2.setBackground(Color.green); ta=new TextArea(); ta.setEditable(false); ta.setBackground(Color.green); ta.setFont(new Font("Courier", Font.PLAIN, 14)); Button arvuta=new Button("Korruta arvud"); arvuta.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ try{ ta.setText(korrutaKirjalikult(tf1.getText(), tf2.getText())); tf1.setText(""); tf2.setText(""); }catch(Exception viga){viga.printStackTrace();} } }); Label silt1=new Label("Esimene arv"); silt1.setBackground(Color.green); Label silt2=new Label("Teine arv"); silt2.setBackground(Color.green); Panel vali1 = new Panel(); vali1.setLayout(new BorderLayout()); vali1.add(silt1, BorderLayout.WEST); vali1.add(tf1, BorderLayout.CENTER); Panel vali2 = new Panel(); vali2.setLayout(new BorderLayout()); vali2.add(silt2, BorderLayout.WEST); vali2.add(tf2, BorderLayout.CENTER); Panel nupupan=new Panel(); nupupan.setLayout(new BorderLayout()); nupupan.setBackground(Color.green); nupupan.add(arvuta, BorderLayout.WEST); Panel paneel1=new Panel(); paneel1.setBackground(Color.green); paneel1.setLayout(new GridLayout(0,1)); paneel1.add(vali1); paneel1.add(vali2); paneel1.add(nupupan); setLayout(new BorderLayout()); add(paneel1, BorderLayout.NORTH); add(ta, BorderLayout.CENTER); } String korrutaKirjalikult(String arv1, String arv2){ int num; //korrutamistehe kõik pannakse ühte StringBuferisse StringBuffer vastus = new StringBuffer(); try{ //Kõigepealt arvutame kogu tehte vastuse... num = Integer.parseInt(arv1); //...et siis selle järgi hakata joondama kogu ülejäänud teksti. String tulemus = new String(""+(Integer.parseInt(arv2)*num)); //Teeme esimesed kolm rida. mis on alati sarnased: // Esimene arv, // '*'+Teine arv .. ja // -------------- vastus.append( asetaTaht(tulemus.length()-arv1.length(), ' ')+arv1+"\n*"+ asetaTaht(tulemus.length()-arv2.length()-1, ' ')+arv2+'\n'+ ' '+asetaTaht(tulemus.length()-1, '-')+'\n' ); //Edasi tuleb juba osa, mis eelkõige oleneb teisest arvust. //Nimelt nii pikk, kui on teine arv, nii palju tuleb korrutada esimest arvu //järjest läbi yhe numbriga teisest arvust, ja siis see asetada alati yhe //koha võrra vasemale kui eelmine. for(int i=arv2.length()-1, n=0; i>=0; i--, n++){ String vt = new String(""+Integer.parseInt(""+arv2.charAt(i))*num); vastus.append(asetaTaht(tulemus.length()-vt.length()-n, ' ')+vt+"\n"); } //Kõige lõpuks veel vaja teha vastusejoon ja sinna alla veel vastus lisada vastus.append(asetaTaht(tulemus.length(), '=')+'\n'+ asetaTaht(0, ' ')+tulemus); //System.out.println(vastus); //System.out.println(); } catch(NumberFormatException e){ return("Ainult numbreid paluks !");} return(vastus.toString()); } /** * Funktsioon, mida saab kasutada yhe tähe kirjutamiseks i korda järjest. * Kui tahemärgi parameetrina anda kaasa tyhik (' '), siis ennäe imet, * joondama kukub! */ String asetaTaht(int i, char taht){ StringBuffer str = new StringBuffer(); for(int n=0; n