11

我不确定为什么我的 Java 代码无法编译,任何建议都将不胜感激。

   String rank = card.substring(0,1);
    String suit = card.substring(1);
    String cards = "A23456789TJQKDHSCl";
    String[] name = {"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King","Diamonds","Hearts","Spades","Clubs"};
    String c ="";
    for(int a = 0, b = 1; a<cards.length-1; b=a+1; a++;){
        if(rank===cards.substring(a,b){
            c+=name[a];
        }


    }
    system.out.println(c);
4

9 回答 9

28
  1. 它是cards.length(),不是cards.lengthlength是 的方法java.lang.String而不是属性)。

  2. 它是System.out(大写的's'),而不是system.out。请参阅java.lang.System

  3. 这是

    for(int a = 0, b = 1; a<cards.length()-1; b=a+1, a++){
    

    不是

    for(int a = 0, b = 1; a<cards.length-1; b=a+1; a++;){
    
  4. 从语法上讲,它是if(rank == cards.substring(a,b)){,不是if(rank===cards.substring(a,b){(双等号,不是三等号;缺少右括号),而是要比较两个字符串是否相等,您需要使用equals()if(rank.equals(cards.substring(a,b))){

您可能应该考虑下载Eclipse,它是一个(不仅是)用于 Java 开发的集成开发环境。Eclipse 在您键入时向您显示错误并提供修复这些错误的帮助。这使得开始 Java 开发变得更加容易。

于 2013-02-07T13:43:51.083 回答
8

而不是这个: for(int a = 0, b = 1; a<cards.length-1; b=a+1; a++;){

它应该是

for(int a = 0, b = 1; a<cards.length()-1; b=a+1, a++){
                                     ^         ^    ^  
                                     |         |    |  
                                     |         |    |  
            -------------------------------------------Note the changes
           |                    
           v                                                  |
   if(rank==cards.substring(a,b){                             |
-------------------------------------------------------------                                  
|
v
System.out.println(c); //capital S in system
于 2013-02-07T13:43:52.623 回答
5

for循环中只允许使用两个分号。

  1. 第一个分号之前是初始化部分。
  2. 在第一个分号之后和第二个分号之前是条件部分(必须是布尔值)。
  3. 第二个分号之后是变量操作部分(增量/减量部分)。

如果您有多个变量的初始化或多个变量的操作,您可以通过用逗号(,)分隔它们来实现。

for(int i=0, j=5; i < 5; i++, j--)

注意:不允许使用逗号分隔的多个条件。

for(int i=0, j=5; i < 5, j > 5; i++, j--) // This is NOT allowed.
于 2013-02-07T14:00:08.133 回答
1

我认为这应该有效:

    String rank = card.substring(0,1);
    String suit = card.substring(1);
    String cards = "A23456789TJQKDHSCl";

    String[] name = {"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King","Diamonds","Hearts","Spades","Clubs"};
    String c ="";
    for(int a = 0, b = 1; a<cards.length()-1; b=a+1, a++ )
    {
        if( rank.equals( cards.substring(a,b) ) )
        {
            c+=name[a];
        }


    }
    System.out.println(c);
于 2013-02-07T13:48:48.170 回答
1

你的 for 循环是错误的。尝试 :

for(int a = 0, b = 1; a<cards.length()-1; b=a+1, a++){

此外,System代替system==代替===.

但我不确定你想做什么。

于 2013-02-07T13:43:28.930 回答
0

for循环只能包含三个参数,你用过4个。请重述问题,你想实现什么?

于 2013-02-07T13:43:38.713 回答
0

也用逗号分隔增量。

for(int a = 0, b = 1; a<cards.length-1; b=a+1, a++)
于 2013-02-07T13:43:41.007 回答
0

更改此行

for(int a = 0, b = 1; a<cards.length-1; b=a+1; a++;){ 

for(int a = 0, b = 1; a<cards.length-1, b=a+1; a++){
于 2013-02-07T13:43:59.850 回答
0

你的for循环格式不正确——它不能接受 4 个参数,而且你不能;像以前那样将两个参数结合起来。

利用:

for(int a = 0, b = 1; a<cards.length-1; a++)
于 2013-02-07T13:45:37.667 回答