0

我想做一个测验程序。问题位于资产文件夹中的文本文件中。答案也在名为问题编号的资产文件夹中(例如:第一个问题的答案在名为 1 的文本文件中)。我想随机给出问题和答案(按钮的答案)。直到这一切都很好(也许不是最短的解决方案,但效果很好)。然后用户可以点击正确的按钮回答问题。这就是问题所在。我得到按钮的文本和答案文件的第一行(第一行总是答案文本文件中的正确答案)。应该是一样的,然后我签字,这是正确答案。但它不一样,我不知道为什么。从答案文件中将文本放入按钮并从答案文件中获取第一行,所以应该是一样的。我把它打印出来记录猫,看起来它们是一样的。我不知道可能出了什么问题。谁能帮帮我。

这是我设置按钮文本(随机)并比较第一行和按钮文本的地方:

BufferedReader br2 = new BufferedReader(is2, 8192);

                        for(int k2=0; k2<3; k2++){
                            try {
                                kerdes2[k2] =  br2.readLine();
                                final ArrayList <Integer> kerdesno2 = new ArrayList<Integer>();
                                for(int j=0;j<3;j++) kerdesno2.add(j);
                                Collections.shuffle(kerdesno2);
                                System.out.println(kerdesno2);
                                answ.setText(kerdes2[kerdesno2.get(0)]);
                                answ2.setText(kerdes2[kerdesno2.get(1)]);
                                answ3.setText(kerdes2[kerdesno2.get(2)]);
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                            answ.setOnClickListener(new View.OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                    InputStreamReader is3 = null;
                                    try {
                                        is3 = new InputStreamReader(am.open(i3), "ISO-8859-1");
                                    } catch (UnsupportedEncodingException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    BufferedReader br3 = new BufferedReader(is3, 8192);
                                    try {
                                        String helyes = br3.readLine();
                                        System.out.println(helyes);
                                        String gomb = answ.getText().toString();
                                        System.out.println(gomb);

                                        for(int f=0; f<helyes.length(); f++)
                                        {
                                            char c = helyes.charAt(f);
                                            char d = gomb.charAt(f);
                                            if(c != d){
                                                System.out.println(c);
                                                System.out.println(((String) gomb).indexOf(c));
                                            }
                                        }

                                        if(gomb == helyes)                                  
                                        {
                                            x++;
                                            TextView eredmeny = (TextView)findViewById(R.id.eredmeny);
                                            eredmeny.setText("Eredményed: " + Math.round(x*100/i2) + "%");
                                        }
                                        else
                                        {
                                            TextView eredmeny = (TextView)findViewById(R.id.eredmeny);
                                            eredmeny.setText(gomb + " = " + helyes);
                                        }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                            });

                            answ2.setOnClickListener(new View.OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                    InputStreamReader is3 = null;
                                    try {
                                        is3 = new InputStreamReader(am.open(i3), "ISO-8859-1");
                                    } catch (UnsupportedEncodingException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    BufferedReader br3 = new BufferedReader(is3, 8192);
                                    try {
                                        String helyes = br3.readLine();
                                        System.out.println(helyes);
                                        String gomb = answ2.getText().toString();
                                        System.out.println(gomb);
                                        if(gomb == helyes)                                          
                                        {
                                            x++;
                                            TextView eredmeny = (TextView)findViewById(R.id.eredmeny);
                                            eredmeny.setText("Eredményed: " + Math.round(x*100/i2) + "%");
                                        }
                                        else
                                        {
                                            TextView eredmeny = (TextView)findViewById(R.id.eredmeny);
                                            eredmeny.setText(gomb + " = " + helyes);
                                        }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                            });

                            answ3.setOnClickListener(new View.OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                    InputStreamReader is3 = null;
                                    try {
                                        is3 = new InputStreamReader(am.open(i3), "ISO-8859-1");
                                    } catch (UnsupportedEncodingException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    BufferedReader br3 = new BufferedReader(is3, 8192);
                                    try {
                                        String gomb = answ3.getText().toString();
                                        String helyes = br3.readLine();
                                        System.out.println(gomb);
                                        System.out.println(helyes);
                                        if(gomb == helyes){
                                            x++;
                                            TextView eredmeny = (TextView)findViewById(R.id.eredmeny);
                                            eredmeny.setText("Eredményed: " + Math.round(x*100/i2) + "%");
                                        }
                                        else
                                        {
                                            TextView eredmeny = (TextView)findViewById(R.id.eredmeny);
                                            eredmeny.setText(gomb + " = " + helyes);
                                        }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                            });

如您所见,我尝试遍历这两个字符串以了解问题出在哪里,但是我找不到...

4

2 回答 2

1

字符串是一个对象。比较对象时,使用 .equals(),而不是 ==。

你的代码:

if(gomb == helyes)

应该:

if(gomb.equals(helyes))

通过使用 == 您正在比较内存,而不是实际的 String 对象。有时你会得到预期的结果,但有时你不会。.equals() 将始终测试字符串本身。

于 2013-04-23T14:59:23.640 回答
0

我可以看到你在比较

if(gomb == helyes){

虽然它应该是

if(gomb.equals(helyes)){
于 2013-04-23T15:00:03.217 回答