ожидаемый неквалифицированный идентификатор перед общедоступным - не вижу проблемы (Java) - PullRequest
0 голосов
/ 07 октября 2018

Я потратил около 4, может быть, 5 часов, пытаясь выяснить этот кусок кода с сайта Java вчера.Он принимает шестнадцатеричный ввод и преобразует его в цифру.Было много методов, которые я еще не исследовал.Но после того, как я, наконец, обернул голову (кричал "birdfreeyahoo"), я попытался добавить его в свою программу и собрать.И затем я столкнулся с этой ошибкой:

ожидаемый неквалифицированный идентификатор перед 'public'

Я уже создавал и вызывал void-функции, но я никогда еще не имел дело с классами или статическими функциями.Большинство учебных пособий, за которыми я следовал, просто полагается на кодирование исключительно в рамках установки или циклов, потому что arduino ориентирован на новичков.Как упомянуто birdfreeyahoo, getDecimal (String hex) должен быть объявлен в начале функции, чтобы позже можно было использовать свойство String hex в программе.

Я знаю, что это должно быть что-то, связанное ссинтаксис класса / функции в программе, так как я скопировал код с сайта java и составляет 1: 1 verbatum (конечно, только после того, как разбил его и сначала проанализировал).

Code:

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 () {}

Для всей моей программы и того, где она находится сейчас (для справки):

// Из-за светодиода, поставляемого в комплекте, мы вынуждены использовать некоторые обходные пути, чтобы заставить RGB работать для общего анодного светодиода.Оригинальный материал урока был направлен на общий катод.

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);
            }
          */

          }
      }
  }

1 Ответ

0 голосов
/ 07 октября 2018

Проблема в том, что вы скопировали и вставили весь класс HexToDecimalExample3 в середину метода main.

Это недопустимо.Вы не можете встроить открытый класс в середину такого метода.

Вернитесь к своему учебнику или руководству по Java и прочитайте о структуре класса Java, о том, как объявлять методы, как вызывать методы и т. Д.на.Это поможет вам понять, что вы должны делать.

Вот хорошее место для начала обучения:


Подсказка: поместите метод getDecimal перед основным методом и избавьтесь от ложного объявления класса HexToDecimalExample3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...