如何知道数组是否包含给定的值

时间:2012-10-13 19:26:21

标签: java arrays

您好我想弄清楚数组是如何工作的,现在我创建了一个类,在类中查找一个整数,但我想我已经做了一些工作..特别是方法转换是错误的我认为..它如果数组索引包含该值,则必须在数组中进行搜索,如果是,则将其打印出来但不起作用有人可以解释逻辑以及如何解决它吗? (如果可能,请举例说明)

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

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);


}

}

3 个答案:

答案 0 :(得分:4)

您已将数组定义为: -

String[] strings = new String[klein];

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

Arrays.asList(strings).contains(waar)

您实际上正在检查ArrayList类型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);
        }
    }

}

答案 1 :(得分: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);
       }
    }
}

答案 2 :(得分: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("");
      }
   }
}