您好我想弄清楚数组是如何工作的,现在我创建了一个类,在类中查找一个整数,但我想我已经做了一些工作..特别是方法转换是错误的我认为..它如果数组索引包含该值,则必须在数组中进行搜索,如果是,则将其打印出来但不起作用有人可以解释逻辑以及如何解决它吗? (如果可能,请举例说明)
提前谢谢!下面你可以看到我的代码: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);
}
}
答案 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("");
}
}
}