#java
#java
Вопрос:
Я пытаюсь передать значения в статический метод с именем «результат»; Как мы можем передать и какой аргумент (0) в методе?
не могли бы вы помочь мне понять концепцию и почему нам нужно передавать значения в виде списка? 🙂
также, пожалуйста, помогите мне найти другие возможные значения для хранения частоты элементов в HashMap?
Я упоминаю hr-код ниже:
import java.util.*;
public class Counting_Triplets {
static long result(List<Long> arr,long r) {
HashMap<Long,Long> left=new HashMap<Long,Long>();
HashMap<Long,Long> right=new HashMap<Long,Long>();
//to put the frequency values into right
for(long j:arr) {
right.put(j, right.getOrDefault(j, (long) 0) 1);
}
long count=0;
for(int i=0;i<arr.size();i ) {
long mid=arr.get(i);
long c1=0,c3=0;
//to reduce the frequency of right
right.put(mid, right.getOrDefault(mid, 0l)-1);
if(left.containsKey(mid/r) amp;amp; mid % r==0) {
c1=left.get(mid/r);
}
if(right.containsKey(mid*r)) {
c3=right.get(mid*r);
}
count=count (c1*c3);
//to increase the left count
left.put(mid, left.getOrDefault(mid, 0l)-1);
}
return count;
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("Enter the number of elements :");
int n=s.nextInt();
System.out.println(" Enter the 'r' value :");
int r=s.nextInt();
ArrayList<Long> arr=new ArrayList<Long>();
for(long i=0;i<arr.size();i ) {
arr[i]=s.nextLong();
}
result(arr, r);
}
}
Комментарии:
1. Вам нужно передать список, потому что это то, на что запрограммирован этот метод. Можете ли вы уточнить, что вы подразумеваете под этим: Как мы можем передать и какой аргумент (0) в методе? ?
2. В-третьих:
arr[i]
это синтаксис для добавления значения в массив, а не в ArrayList .
Ответ №1:
Имя вашего метода очень не описательное, и очень сложно понять, чего вы пытаетесь достичь.
Что касается перехода к методу, вы используете список, поскольку у вас есть неизвестное (во время компиляции) Количество передаваемых значений, т. Е. Иногда вы хотите передать 3 значения, а в другой раз, возможно, 35000. Метод всегда имеет фиксированное количество аргументов, поэтому нам нужно, чтобы один из этих аргументов был списком или массивом.
Чтобы добавить элементы в список:
List<Object> myList = new ArrayList<>();
Object myObject = new Object();
myList.add(myObject);
Если вы не хотите использовать списки, вы также можете использовать массив, поскольку количество значений известно во время выполнения. Размер массива не изменяется динамически, как список, но вы можете назначить его размер во время инициализации.
static long result(Long[]) {...}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Enter the number of elements: ");
int n = s.nextInt();
System.out.println("Enter the 'r' value: ");
int r = s.nextInt();
Long[] arr = new Long[n];
for(int i = 0; i < n; i ) {
arr[i]=s.nextLong();
}
result(arr, r);
}
Ответ №2:
Я не могу получить полное представление о том, чего вы пытаетесь достичь, но давайте поговорим о некоторых ошибках:
Здесь вы создаете ArrayList:
ArrayList<Long> arr=new ArrayList<Long>();
for(long i=0;i<arr.size();i ) {
arr[i]=s.nextLong();
}
result(arr, r);
}
Проблемы:
-
Вы рассматриваете arraylist как массив, это неправильная концепция. Пожалуйста, прочитайте об API Java Collections. Вы должны ссылаться на элемент следующим образом:
arr.get(i)
И здесь возникает следующая проблема: почему вы выбрали long для счетчика? Если вы не работаете с действительно огромным количеством элементов (больше, чем может обработать Int), никогда не используйте какой-либо счетчик, кроме int .
for(int i=0;i<arr.size();i ) {
arr.get(i);
}
Говоря о том, почему вы должны использовать list в методе result — потому что он указан в методе result, совершенно очевидно.
void pleaseGiveMeInt(int Number) {
have some fun with a number
}
Если вы хотите повеселиться с чем-нибудь еще, вам следует выбрать правильные переменные: double, List, Object, что угодно
Если мой ответ вас смущает — я могу только предложить вам прочитать о методах, функциях, типах данных и Java Documentation / Collections API.
Удачи в мире Java!