首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >'public‘之前应该有不合格的id--看不到问题(Java)

'public‘之前应该有不合格的id--看不到问题(Java)
EN

Stack Overflow用户
提问于 2018-10-07 07:09:34
回答 1查看 657关注 0票数 0

昨天,我花了大约4,5个小时试图弄清楚java站点上的这段代码。它接受十六进制输入并将其转换为数字。有很多方法我还没有探索过。但是在我最终理解了它之后(大喊"birdfreeyahoo"),我试着把它放到我的程序中并编译。然后我遇到了这个错误:

应为'public‘之前的非限定id

我以前做过并调用过void函数,但我还从来没有处理过类或静态函数。我一直关注的大多数教程完全依赖于设置或循环范围内的编码,因为arduino是面向初学者的。正如birdfreeyahoo提到的,getDecimal(字符串十六进制)必须在函数的开头声明,这样属性字符串十六进制才能在稍后的程序中调用以供使用。

我知道它必须与程序中类/函数的语法相关,因为我从java站点复制了代码,并且是1:1的动词(当然,只有在分解它并首先分析它之后)。

代码:

代码语言:javascript
复制
public class HexToDecimalExample3{    
public static int getDecimal(String hex){   
    String digits = "0123456789ABCDEF";  
             hex = hex.toUpperCase();  
             int val = 0;  
             for (int i = 0; i < hex.length(); i++)  
             {  
                 char c = hex.charAt(i);  
                 int d = digits.indexOf(c);  
                 val = 16*val + d;  
             }  
             return val;  
            }
          }

这与我在程序中的其他更简单的函数一起抛出,并在void setup(){}之前实现

对于我的整个程序和它现在的位置(供参考):

//由于套件中提供的LED,我们被迫使用一些变通方法来使RGB在公共阳极LED上工作。最初的课程材料是针对普通阴极的。

代码语言:javascript
复制
class test{
    public static void main(string[] args){

          int LEDPower = 8;
          int redPin = 6;
          int greenPin = 5;
          int bluePin = 3;
          int voltInput;
          String colorChoice;

          //FUNCTIONS FOR SIMPLER IMPLIMENTATION

          void redColor (){
            analogWrite (redPin, 0);
            analogWrite (greenPin, 255);
            analogWrite (bluePin, 255);
          }

          void greenColor (){
            analogWrite (redPin, 255);
            analogWrite (greenPin, 0);
            analogWrite (bluePin, 255);
            }

          void blueColor (){
            analogWrite (redPin, 255);
            analogWrite (greenPin, 255);
            analogWrite (bluePin, 0);
            }


          public class HexToDecimalExample3{    
          public static int getDecimal(String hex){   
              String digits = "0123456789ABCDEF";  
                       hex = hex.toUpperCase();  
                       int val = 0;  
                       for (int i = 0; i < hex.length(); i++)  
                       {  
                           char c = hex.charAt(i);  
                           int d = digits.indexOf(c);  
                           val = 16*val + d;  
                       }  
                       return val;  
                      }
                    }


          void setup() {
            Serial.begin (2000000);
            pinMode (LEDPower, OUTPUT);
            pinMode (redPin, OUTPUT);
            pinMode (greenPin, OUTPUT);
            pinMode (bluePin, OUTPUT);
            digitalWrite (LEDPower, HIGH);

          }


            /*
            for (int j=1; j<3; j+1){
              redColor();
              delay(100);
              greenColor();
              delay(100);
              blueColor();
              delay(100);
            }
            */

          }



          void loop() {

            Serial.println("What Color Would You Like (HEX COLORS #RRGGBB)?");
            while (Serial.available()==0);{
            }
            colorChoice = Serial.readString();
            colorChoice.trim();
            Serial.println("Decimal of " + colorChoice + "is: " +getDecimal(colorChoice));



            if (colorChoice=="red"){
              redColor();
            }

            if (colorChoice=="green"){
              greenColor();
            }

            if (colorChoice=="blue"){
              blueColor();    
            }





            //THROW EXCEPTION IF NOT VALID

          /*
            if (colorChoice != "red" && colorChoice != "green" && colorChoice!= "blue"){
              Serial.println("");
              Serial.println("That is not a valid choice");
              Serial.println("");
            }
            */

          /*
            if (strstr(colorChoice, "red") != NULL){
              Serial.println("applying...");
              delay(1000);
              analogWrite (redPin, 0);
              analogWrite (greenPin, 255);
              analogWrite (bluePin, 255);
            }
          */

          }
      }
  }
EN

回答 1

Stack Overflow用户

发布于 2018-10-07 08:30:07

问题是您已经将整个HexToDecimalExample3类复制并粘贴到main方法的中间。

这是无效的。你不能在这样的方法中间嵌入一个公共类。

回到您的Java教科书或教程,阅读有关Java类的结构、如何声明方法、如何调用方法等内容。这将帮助你理解你应该做什么。

这里是一个开始学习的好地方:

提示:将getDecimal方法放在 main方法之前,并去掉虚假的HexToDecimalExample3类声明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52684100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档