Java одномерные массивы

Конечно! Нет причин, по которым вы не можете иметь приложение только с услугой. ... и нет необходимости входить в AIDL, если вы этого не хотите.

Проблема в том, как заставить приложение запускаться. Когда вы создаете приложение с активностью, вы добавляете в манифест фильтр Intent, который запускает активность с Launcher. Если нет никакой активности, вам придется найти другой способ ее запуска.

Это легко сделать. Просто запустите намерение от одной из ваших других программ, например:

startService(new Intent("my.service.intent"));

... где служба зарегистрирована ваш манифест, например:

        <service android:name=".SomeService" >
          <intent-filter>
            <action android:name="my.service.intent"/>
          </intent-filter>

Вы могли бы используйте это намерение передать Parcelable параметры в службу, и служба может ответить, передавая намерения обратно.

Конечно, startService и broadcastIntent немного неуклюжи, если вам действительно нужен сложный API между приложениями и вашим сервисом. Если вам нужно что-то более богатое, вы захотите посмотреть в AIDL и связанную службу.

Отредактировано для добавления Intent Filter

0
задан Mark 5 March 2019 в 06:25
поделиться

2 ответа

Попробуйте это (см. Комментарии к коду для пояснений):

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        int[] num = new int[100];
        int i = 0;
        while (i < 100) { // Check if the array is already full
            System.out.print("Enter 0 to Exit or enter the integers between 1 and 50 (Input #" + (i + 1) + ") : ");
            int value = input.nextInt();
            if (value == 0) {
                break;
            }
            if (value < 1 || value > 50) { // check if input is between 1 and 50
                System.out.println("Input is not between 1 and 50");
            } else {
                num[i] = value;
                System.out.println();
            }

            i++;
        }
        System.out.println();
        System.out.println("Result: ");
        for (int j = 0; j < i; j++) {
            int n = 0;
            boolean isAlreadyPrinted = false; // flag to check if will be printed or not
            for (int k = 0; k < i; k++) {
                if (num[j] == num[k]) {
                    if (j > k) { // this means that the same value is already found and printed
                        isAlreadyPrinted = true;
                    }
                    n++;
                }

            }

            if (!isAlreadyPrinted) {
                System.out.println(num[j] + " occurs " + n + " times");
            }
        }
    }

}
0
ответ дан Mark 5 March 2019 в 06:25
поделиться

Проблема с вашим циклом.

Вы не должны увеличивать значение j до i. Вот почему «1 встречается 2 раза» печатает дважды. Что вам нужно сделать, так это проверить, что значение определенного индекса массива встречалось несколько раз перед выполнением части печати. ​​

public static<T> T[] subArray(T[] array, int beg, int end) {
    return Arrays.copyOfRange(array, beg, end + 1);
}

public static boolean hasDuplicateValues (int[] array, int value )
{
    boolean result = false ; 
    int count = 0 ; 
    for (int i=0 ; i< array.length; i++)
    {
           if(array[i] == value)
           {
            count = count+1 ; 
           }

    }

    if(count > 1)
    {
      result = true; 
    }

   return result; 
}

public static void main(String[] args)
{
 Scanner input = new Scanner(System.in);
     int[] num = new int[100];
     int i = 0;
     System.out.print("Enter the integers between 1 and 50: ");
     num[i] = input.nextInt();
    while(num[i] != 0){
        i++;
        num[i] = input.nextInt();
    }
    for(int j=0;j<i;j++){
        int n = 0;
        for(int k=0;k<i;k++){
            if(num[j] == num[k]){
                n++;
            }
        }


        int[] subarray = subArray(num, 0, i);
        boolean isDuplicate = hasDuplicateValues (subarray , num[i] )
    if(isDuplicate == false )
    { 
          System.out.println(num[j] + " occurs " + n + " times");
    }


    }



}
0
ответ дан Sanuththara 5 March 2019 в 06:25
поделиться