STA하기 rt ...
1) 배열 answer
길이 100을 만들고 메서드에 전달한 다음 아무 곳에 나 사용하지 마십시오.
2) 입력 할 숫자의 수를 알려주려면 kb.nextInt()
으로 입력 한 다음 아무 것도 입력하지 마십시오. 그 int를 변수에 할당하지 않습니다.
3) 배열 arryNum
을 만들고 비워 두십시오. 당신은 절대로 아무것도 넣지 않습니다.
4) 공백으로 구분 된 숫자를 입력하도록 사용자에게 요청합니다. 그런 다음 첫 번째 int 만 입력하면됩니다.
내가 배우는 것처럼 보이기 때문에 코딩을 맡길 것입니다. 바라건대 코드의 특정 부분이 무엇을하는지 볼 수 있다면 거기에서 계속 이동할 수 있기를 바랍니다. 나의 한가지 팁은보다 기술적 인 변수 이름을 사용하는 것이다. 코드를 볼 때 진행되는 작업을 더 쉽게 읽을 수 있습니다.
일부 솔루션
1) 요구 사항 당신이 inputArray()
방법으로 배열을 통과해야 말을하지 않는 한 당신이 방법에서 다른 모든 일을하고 있기 때문에, 난 그냥 모두 함께 제거한다. 나는 매개 변수없이 inputArray()
으로 int[] answer = new int [100];
호출하는 방법을 제거하고 당신은 그들이 "어떻게 당신이 기본적를 요구하는 입력하려고 얼마나 많은 숫자를 사용자에게 문의하면 메소드의 서명 만
public static void inputArray() { ... }
2)를 변경할 것 내 배열이 있어야합니까? " 이 int를 얻을 때 새로운 배열을 만드는 데 사용해야합니다. 내가 usersNumbers
에 arrayNum
의 이름을 변경 한
System.out.print("How many numbers will you enter? ");
int usersNumbers = new int[kb.nextInt()];
공지 사항처럼 뭔가. 더 이해하기 쉽고 코드를 더 쉽게 읽을 수 있습니다.
3) 이제 모든 숫자를 가져 와서 배열에 넣기를 원합니다. 여러 개의 숫자를 가져와야하기 때문에 루프가 필요합니다. 다시 말하지만, 요구 사항이 당신이해야한다고 말하지 않는다면, 나는 이것을 약간 다르게 할 것입니다. 공백으로 구분 된 한 줄에 모든 숫자를 입력하는 대신 개별적으로 숫자를 묻습니다. 배열의 길이 (얼마나 많은 숫자를 입력 할 것인가)를 알기 때문에, 우리는 얼마나 많은 시간을 그들에게 알려주는지 압니다.
System.out.println("\nEnter numbers in [0, 100] range.\n");
for (int i = 0; i < usersNums.length; i++) {
System.out.println("Enter Your Number:");
usersNums[i] = kb.nextInt();
}
4) 이제 입력 된 각 int의 발생 횟수를 계산합니다. 사용자는 임의의 순서로 숫자를 입력 할 수 있기 때문에 더 힘들어집니다. 다시 말하지만, 귀하의 요구 사항이 정확히 무엇인지는 모르겠지만, 여기에 내가 한 일이 있습니다. 먼저 고유 번호 목록을 얻고 싶습니다. 예를 들어, 배열이 {2, 4, 2, 5, 2, 4}이면 {2, 4, 5}로 목록을 가져오고 싶습니다. 일단 내가 가지고 있으면 각 번호를보고 배열을 통해 여러 번 볼 수 있습니다. 고유 번호 목록을 얻는 쉬운 방법은 Set
에 넣는 것입니다. 중복을 허용하지 않는 데이터 구조입니다. TreeSet
은 쉽게 읽을 수 있도록 숫자를 순서대로 나열한 세트입니다.
Set<Integer> uniqueNumbers = new TreeSet<Integer>();
for (int i : usersNums) { uniqueNumbers.add(i); }
이제 고유 번호 목록이 생겼으니 이제 계산을 시작할 수 있습니다. 나는 0부터 시작한다. 그 다음 세트의 모든 숫자에 대해 배열의 모든 숫자를보고 동일한지 확인한다. 그럴 경우 카운트는 1 씩 증가합니다. 배열 끝에 도달하면 해당 숫자에 대한 결과를 인쇄 한 다음 카운트를 0으로 재설정합니다.
int count = 0;
for (Integer i : uniqueNumbers) { //For every number in the Set
for (int j = 0; j < usersNums.length; j++) { //Look at every number in the array
if (i == usersNums[j]) { count++; } //If the same, count++
}
System.out.print(i + " - " + count + "\n"); //Print results
count = 0; //Reset Count
}
나는이 질문이 너무 애매하다고 느낍니다. 더 많은 관심을 가지고 질문해야합니다. 정확하게, 당신이 기대하는대로 작동하지 않습니다. 혼동을 일으키는 코드 동작의 어떤 부분을 찾으십니까? 현재 작성된 방식대로 작동 할 것으로 기대하십니까? 이것은 숙제 도움보다 더 좋아 보인다. 나는 중재자가 아니지만 StackOverflow가 적절한 장소가 아닌 것으로 의심한다 –