2017-11-12 6 views
-1

내 배열에 내 정보를 저장하고 나중에 사용하기 위해 전화하는 방법을 잘못 이해 한 것 같습니다. 다음 코드는 사용자에게 보유한 Cd의 수를 묻고 장르, 아티스트 및 제목을 입력 할 수 있도록하는 것입니다. 그런 다음 하나 이상의 CD가있는 경우 루프로 돌아갑니다. 나는 모든 것이 대부분 정확하다고 믿지만, 내 결과는 옳지 않습니다. 2 Cd 's를 입력 할 때마다 CD 1의 처음 세 항목을 입력 할 수 있지만 CD 2를 인쇄하고 프로그램 끝까지 곧바로 들어갑니다. 1 CD 2 대 CD를2D 배열, 저장 및 호출

수입 java.util.Scanner를 입력 할 때 발생과 함께 코드를 게시 한 -I

;

공용 클래스 RiverCDs {

public static void main (String args[]) 
{ 
    Scanner scnr = new Scanner (System.in); 
    int cdTotal = 0; // user controlled, controls the number of rows. 
    int col = 3; // constant that controls array col. 
    String value = " "; // holds input for array. 
    int intervals = 1; 

    String [][] list = new String [cdTotal][col]; 

    System.out.println("The River Catalog:\n"); 
    System.out.print("How many CD's do you have: "); 
    cdTotal = scnr.nextInt(); 

    do 
    { 
     if (cdTotal <= 0)    // checking for bad data. 
     { 
      System.out.print("Must be a number greater than 0.\n"); 
      System.out.print("How many CD's do you have: "); 
      cdTotal = scnr.nextInt(); 
     } 

    }while(cdTotal <= 0);    // set up to catch more bad data. 

    System.out.print("\nFor each CD, enter the genre, then the artist, then the title.\n"); 

    for (int i = 1; i <= cdTotal; i++) // incrementing cd based on user input. 
    { 
     System.out.print("\nFor CD " + i + ":\n"); 

     while (intervals <= 3)// condition to exit while loop for next cd. 
     { 

      System.out.print("Enter: "); // outside of for-loop to Enter three items. 
      value = scnr.nextLine(); 
      scnr.next();     // clearing buffer so as to to print a double Enter. 

      for (int r = 0; r < list.length ; r++) // enters row according to how many cdTotal equals. 
      { 
       for (int c = 0; c < list[col].length; c++) // enters col in each row up to three. 
       { 
        list[r][c] = value;// storing array in value for later use. 
       } 
      } 

      intervals++;    // incrementing so as to break loop and print next cd statement. 
     } 
    } 


    System.out.print("\nHere is your catalog:\n"); 
    System.out.printf("\n%-20s" + "%-20s" + "%-20s\n","Genre","Artist","Title"); 
    System.out.println(); 

    for (int r = 0; r < list.length; r++)// accessing list rows 
    { 
     for (int c = 0; c < list[r].length; c++)// accessing list col to pull out individual parts of data. 
     { 
      System.out.printf("%-20s","%-20s","%-20s",list[r][c],list[r][c],list[r][c]); // constant to check for data in array- 
                           //not working 
      //System.out.printf("%-20s","%-20s","%-20s",list[1][0],list[1][1],list[1][2]); 
     } 
    } 
    scnr.close(); // turning off scanner to allow no more input. 
} 

}

1CD- 강 카탈로그 :

얼마나 많은 CD의 할 당신이 각 CD의 경우 1

의 입력 장르, 예술가, 그 다음 제목. CD의 경우 1

: 입력 : 상단을 입력 : 캐미 는 입력 : 하바나을 여기

당신의 카탈로그입니다 :

:

2CD- 강 카탈로그 제목

장르 아티스트

몇 장의 CD가 있습니까? 2

각 CD에 장르를 입력 한 다음 아티스트를 입력 한 다음 제목을 입력하십시오. CD의 경우 1

: 입력 : 상단을 입력 : 캐미 는 입력 : 하바나

을 CD 2의 경우 : 여기

당신의 카탈로그입니다 : 제목

+0

정확히 무엇을 원하는지 물어보십시오. –

+0

얼마나 많은 CD가 있는지 물어 보면 사람이 좋아하는 번호를 입력 할 수 있습니다. 이 코드는 사용자가 장르, 아티스트, 그 다음 제목을 입력 할 수 있도록 허용해야합니다. 첫 번째 반복 후에는 다음 CD로 진행해야합니다. 또한 코드가 멈추고 형식 지정자를 인쇄하는 곳이기도합니다. – Bsmith

답변

0

장르 아티스트 것 같습니다 이 코드와 같은 문제는 다음과 같습니다.

 for (int r = 0; r < i ; r++) // enters row according to how many cdTotal equals. 
     { 

      for (int c = 0; c <= col-1; c++) // enters col in each row up to three. 
      { 
       list[r][c] = value; // storing array in value for later use. 
      } 
     } 

이 코드는 배열의 값이 모두 value 인 모든 을 설정합니다 (i이 큰 경우). 루프 내에서 value을 변경하지 않으므로 배열의 모든 항목이 완전히 똑같습니다.

+0

대신에 나는 내 cdTotal을 사용해야합니까? – Bsmith

+0

주어진 시간에 CD 번호 'i'를하고 있습니까? 그래서 그것은'list [i] [something]'입니다. –

+0

네, 무슨 말하는지 알 겠어. 당신은 맞습니다. 나는 CD 반복을 제어하기 위해 내가 사용하고 있습니다. 그래서 나는 그것을'list [I] [c] = value; – Bsmith