2

您好,我正在尝试弄清楚数组是如何工作的,现在我创建了一个在类中查找整数的类,但我认为我已经完成了一些工作.. 特别是方法 convert 我认为是错误的.. 它必须搜索在数组中,如果数组索引包含该值,如果是打印出来但它不起作用,有人可以解释逻辑以及如何解决它吗?(如果可能的话,举个例子)

提前致谢!下面你可以看到我的代码:

package h05UitgeschrevenGetal;

import java.awt.event.*;
import java.util.Random;

import javax.swing.*;

public class GetalConverter extends JPanel implements ActionListener {

private JLabel getal;
private JTextField invoer, uitvoer;
private int invoerWaarde;
private JButton converteer;

String[] klein = new String[20];
String[] groot = new String[10];

public GetalConverter() {

    getal = new JLabel("geef een geheel getal");
    add(getal);

    invoer = new JTextField(7);
    invoer.addActionListener(this);
    add(invoer);

    converteer = new JButton("In woorden");
    converteer.addActionListener(this);
    add(converteer);

    uitvoer = new JTextField(7);
    uitvoer.setEditable(false);
    add(uitvoer);

    klein[0] = "nul";
    klein[1] = "een";
    klein[2] = "twee";
    klein[3] = "drie";
    klein[4] = "vier";
    klein[5] = "vijf";
    klein[6] = "zes";
    klein[7] = "zeven";
    klein[8] = "acht";
    klein[9] = "negen";
    klein[10] = "tien";
    klein[11] = "elf";
    klein[12] = "twaalf";
    klein[13] = "dertien";
    klein[14] = "veertien";
    klein[15] = "vijftien";
    klein[16] = "zestien";
    klein[17] = "zeventien";
    klein[18] = "achtien";
    klein[19] = "negentien";

    groot[1] = "tien";
    groot[2] = "twintig";
    groot[3] = "dertig";
    groot[4] = "veertig";
    groot[5] = "vijftig";
    groot[6] = "zestig";
    groot[7] = "zeventig";
    groot[8] = "tachtig";
    groot[9] = "negentig";

}

public void setValue(int val) {

     invoerWaarde = val;
     //System.out.println(invoerWaarde);
}

public int getValue() {

    return invoerWaarde;

}

public void convert() {

    // here comes the converting code

}

@Override
public void actionPerformed(ActionEvent e) {

    setValue(Integer.parseInt(invoer.getText()));
    convert();
    //System.out.println(invoerWaarde);


}

}
4

3 回答 3

4

您已将数组定义为:-

String[] strings = new String[klein];

现在,当您调用contains方法时:-

Arrays.asList(strings).contains(waar)

您实际上是在检查ArrayListtype中是否包含整数String。因为,waar是您在convert方法中传递的整数。你期望它如何返回一个true值?

如果数组索引包含该值,它必须在数组中搜索

对于这种情况,您需要将其传递value给您的convert方法。你还算过客index

我猜你想要这样的东西: -

public void convert(String value) {

    for (int i = 0; i < strings.length; i++) {
        if (strings[i].equals(value)) {

            System.out.println("Value: " + strings[i]);
            System.out.println("Index: " + i);
        }
    }

}
于 2012-10-13T19:29:36.790 回答
1
String findValue = ...;

for(String str: strs){
   if(str.equals(findValue)){
      return true;
   }
}

如果您正在寻找索引 -

public void convert(Integer waar) {
    for(int index=0;index<strs.length;index++){
       if(strs[index].equals(String.valueOf(waar))){
          System.out.println("index -> "+index);
       }
    }
}
于 2012-10-13T19:31:57.413 回答
1

我知道一个事实,从上面给出的代码中,你的程序只能在 0 到 99 的范围内工作。试试这个代码:

public void Convert()
{
   int grootVal, kleinVal;
   if(invoerWaarde < 100){
      //ok, possibility of finding it in the array.
      grootVal = (int)Math.floor(invoerWaarde / 10.0)
      kleinVal = invoerWaarde - (grootVal * 10);
      try{
         String valueString = groot[grootVal] + " " + klein[kleinVal];
         System.out.println(valueString);
      }catch(ArrayOutOfBoundsException aoobe){
          System.out.println("");
      }
   }
}
于 2012-10-14T14:03:17.130 回答