繁体   English   中英

Java中的类型更改

[英]type changing in Java

谁能说出如何解决第10行的问题?

public class TestString {
    public static void main(String[] args) {
        String[] tahed = new String[10];
        String x;
        x = tahed[0] = "P";
        System.out.println(x);
        String nimi = "Paul";
        String[] eraldatud = nimi.split(" ");
        System.out.println(nimi.charAt(0));
        if (x == nimi.charAt(0)) //10
            System.out.println("True");
    }
}

您必须将charAt返回的char转换为String。 我喜欢通过将它连接成这样的字符串来做到这一点:

if (x.equals(""+nimi.charAt(0))) 
public class TestString {
    public static void main(String[] args) {
    String[] tahed = new String[10];
    String x;
    x = tahed[0] = "P";
    System.out.println(x);
    String nimi = "Paul";
    String[] eraldatud = nimi.split(" ");
    System.out.println(nimi.charAt(0));
    if (x.equals(Character.toString(nimi.charAt(0))) //10
        System.out.println("True");
    }
}

您正在尝试将String( x )与char( nimi.charAt(0) )进行比较。

您需要将char转换为String (并使用.equals进行比较:

if (x.equals("" + nimi.charAt(0)))

或者您需要将字符串转换为char:

if (x.charAt(0) == nimi.charAt(0))

(但这可能不是您想要的,因为您基本上检查x以与nimi相同的字符开头)

问题是您将x定义为String,但是将其与char值(charAt()返回的类型)进行比较。 根据您的意图,您需要将它们比较为两个字符串或两个字符:

if(x.charAt(0) == nimi.charAt(0)) //do a character comparison

要么

if(x.equals(nimi.substring(0, 1)) //do a string comparison

您正在将字符串与char比较。 它将永远是平等的。 尝试这个:

 String[] tahed = new String[10];
        String x;
        x = tahed[0] = "P";
        System.out.println(x);
        String nimi = "Paul";
        String[] eraldatud = nimi.split(" ");
        System.out.println(nimi.charAt(0));
        char c = nimi.charAt(0);
        if (x.toCharArray()[0]==(c))//10
            System.out.println("True");

请根据需要优化代码。 这只是为了阐明要点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM