-3

我正在尝试声明一个每次满足条件时都会递增的变量,因为我需要输出满足条件的次数。

变量:

String[] letters = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};

-----this part is inside an if-----
String yourname = request.getParameter("yourname").toLowerCase();
            String crushname = request.getParameter("crushname").toLowerCase();
            yourname = yourname.replace(" ","");
            crushname = crushname.replace(" ","");
            String[] a_yourname = yourname.split("(?!^)");
            String[] a_crushname = crushname.split("(?!^)");

基本上我正在尝试用 Java 编写这个 PHP 代码:

if($yourname[$x] == $letters[$y]){
        if($yourname[$x] == 'a'){
            $y_a++;
        }
        if($yourname[$x] == 'b'){
            $y_b++;
        }
        if($yourname[$x] == 'c'){
            $y_c++;
        }

}

这是我的 Java 部分:

int y_a=0;
int y_b=0;
            for(int x=0;x<a_yourname.length;x++){
                for(int y=0;y<letters.length;y++){
                    if(a_yourname[x] == letters[y]){
                            if(a_yourname[x] == "a"){
                                    y_a++;
                            }
                            if(a_yourname[x] == "b"){
                                    y_b++;
                            }

不要介意缺少的结束标签,每当我打印 y_a 时,它总是返回 0,我猜是因为我将它初始化为保持 0,但是我如何让它初始化的值不会覆盖增加的值呢?

我知道这对某些人来说非常简单,但我真的是一个 PHP 人,而且我对 Java 真的不太了解。

4

3 回答 3

2

a_yourname[x] == "a" 在 java 中不起作用。你需要 a_yourname[x].equals("a") 代替。

或者 a_yourname[x] == 'a' 如果 a_yourname 是一个字符数组。

于 2013-01-26T08:42:19.690 回答
1

您的基本问题是,您尝试使用==.

然而,在 Java==中,只比较对象标识(当与对象一起使用时,例如字符串)而不是它们的内容!

要比较 Java 中对象的内容,请使用equals()(用于相等)或compareTo()(用于排序)。所以在你的情况下,它应该说:

if( a_yourname[x].equals( letters[y] ) ){
    if( "a".equals( a_yourname[x] ) ){
      y_a++;
    }
    if( "b".equals( a_yourname[x] )){
      y_b++;
    }
}

假设,你真的是指这里的字符串比较。

如果您要比较char或单个字符,请转身将""a"标记'为这样!

于 2013-01-26T08:46:29.933 回答
0

只需将您变量从代码所在的函数中删除即可。

例如:

int y_a=0;
int y_b=0;

void function()
{
 for(int x=0;x<a_yourname.length;x++){
                for(int y=0;y<letters.length;y++){
                    if(a_yourname[x] == letters[y]){
                            if(a_yourname[x] == "a"){
                                    y_a++;
                            }
                            if(a_yourname[x] == "b"){
                                    y_b++;
                            }
}
于 2013-01-26T08:46:23.293 回答