2014-07-11 4 views
0

으로 변환합니다. 국가 및 휴대폰 번호 (예 : peru 33)로 이루어진 문자열 배열을 가져 오려고합니다. 그런 다음 숫자를 정수로 변환 한 다음 정수 **으로 막대 그래프를 만듭니다.문자열 배열을 int 배열로 변환 한 다음 int를 *

칠레 ****************는

스웨덴 *******

public class GraphNumbers 
    { 
     int ROWS = 5; 
     int COL = 2; 
     int i, j; 

     public GraphNumbers(){}; 

     public String getArray() 
     { 
     String[][] cellPhoneNumbers = new String[ROWS][COL]; 
      cellPhoneNumbers[0][0] = "Chile"; 
      cellPhoneNumbers[0][1] = "21"; 
      cellPhoneNumbers[1][0] = "Sweden"; 
      cellPhoneNumbers[1][1] = "11"; 
      cellPhoneNumbers[2][0] = "Peru"; 
      cellPhoneNumbers[2][1] = "33"; 
      cellPhoneNumbers[3][0] = "Bulgaria"; 
      cellPhoneNumbers[3][1] = "10"; 
      cellPhoneNumbers[4][0] = "Guatemala"; 
      cellPhoneNumbers[4][1] = "18"; 

      for (i = 0; i < ROWS; i++) 
      { 
       int phones = Integer.parseInt(cellPhoneNumbers[i][1]); 
       for (j = 0; j < COL; j++) 
       { 
        System.out.print(cellPhoneNumbers[i][j] + " "); 
       } 
       System.out.print(""); 
      } 

     return ""; 
     } 

} 

이는 단일에서 인쇄 칠레 21 호선, 스웨덴 11 호선 등. 개별 라인에 인쇄하고 싶습니다. 나는 정수

System.out.print(cellPhoneNumbers[i][phones]) 

를 인쇄하는 전화로 루프에 대한 두 번째 인쇄 라인 INT 그는 일을 시도하지만 난 감사하겠습니다 오류

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 21 
    at GraphNumbers.getArray(GraphNumbers.java:28) 
    at CellPhoneGraph.main(CellPhoneGraph.java:8) 
Java Result: 1 

내가 정말이 그렇게 도움이 혼란스러워지고 있어요에게 얻을 . 당신이

+0

'System.out.print (cellPhoneNumbers [I] [폰])'본질적으로'System.out.print (cellPhoneNumbers을 할 것입니다 [0] [21])'처음 실행하면 System.out.print (cellPhoneNumbers [1] [11])'- 이것은 분명히 작동하지 않습니다. – studro

+0

라인을 인쇄하려면'System.out.println() '을 사용하십시오. – studro

+0

이것은 코드에서 논리적 오류로 최상의 디버깅을 시도합니다. 계속해 –

답변

1

이 code.Try을 편집 한이 하나

for (i = 0; i < ROWS; i++) 
     { 

      for (j = 0; j < COL; j++) 
      { 
       if(j==0) //if it is first column value 
       { 
       System.out.print(cellPhoneNumbers[i][j]+" "); //this prints Country name and leaves a space as you need chillie (space) **** 
       } 
       if(j==1) //this checks that if value is second one as that is integer 
       { 
        for(int x=0;x<Integer.parseInt(cellPhoneNumbers[i][j]);x++) //if a int value so I have written a loop , which will print that many * 
        { 

         System.out.print("*"); 
        } 
       } 

      } 
      System.out.println(""); //So as if first row is done then it moves to next line to print 

     } 
1

내가 정수 여기

int phones = Integer.parseInt(cellPhoneNumbers[i][1]); 

당신이 "21"입니다 cellPhoneNumbers[0][1]를 분석 한 후 정수 21있을 것이다에게 인쇄 전화와 루프에 대한 두 번째 INT 인쇄 라인을하고 시도 감사하고 당신이하려고하는 배열이 String[][] cellPhoneNumbers = new String[5][2];이므로 cellPhoneNumbers[i][phones]에 액세스 할 수 있습니다. 배열이 String[][] cellPhoneNumbers = new String[5][2];이므로 col>=2의 경우 배열에 대해 outofbound로 간주됩니다.


당신이 시도 할 수있는 새로운 라인의 모든 요소를 ​​인쇄하려면

System.out.print(cellPhoneNumbers[i][phones])//<---for phone=21 

.

for (int i = 0; i < ROW ; i++){ 
     for (int j = 0; j < COL; j++){ 
      System.out.println(cellPhoneNumbers[i][j]); 
     }    //Use println instead of print 
    } 

참고 : 또한 당신이 원하는 경우 System.out.print(cellPhoneNumbers[i][j] + "\n");를 사용할 수 있습니다. :)

1

phones의 값은 cellPhoneNumbers[i][1]의 정수 값이며 COL 배열은 2이므로 실패 할 수밖에 없습니다.

현재, System.out.println (...)을 사용하면 별도의 줄에 인쇄 할 수 있으며 반환 할 문자열이 모두 ""인 경우 메서드에서 문자열을 반환하는 이유는 무엇입니까? - 대신 void 함수가 있습니다.

별도의 라인에서 인쇄,

for (int x = 0; x < phones; x++) { 
    System.out.print("*"); 
} 
System.out.println(""); 
0

첫 번째 질문을하려고 *를 인쇄하려면에서 System.out.println (cellPhoneNumbers을 [I] [j]가) (println 메소드를 통지 할 필요가있을 것이다

호출 코드와 관련된 수많은 별을 인쇄하려면 cellPhoneNumbers [i] [phone] 대신에 번호를 반복하여 각 *을 인쇄해야합니다. 예를 들어 " phone "을 배열 인덱스로 사용하면 분명히 범위를 벗어나는 21 번째 인덱스를 참조하게됩니다.

그래서, 별을 인쇄하는 루프의 두 번째 내에서 다음을 수행하십시오

for (int k = 0; k < phones; k++) { 
    System.out.print("*"); 
} 
System.out.println(""); //this will provide a line break after the stars. 
1

음, 첫 번째 반복, 당신은 위치 [0][1]에 배열 값에서라는 intphones을 구문 분석합니다. 이 값은 "21", 그래서 당신은 구문 분석 int 케이스 인이 줄 그건

(21) 값이됩니다

System.out.print(cellPhoneNumbers[i][phones]); 

일에 해당이 :

System.out.print(cellPhoneNumbers[0][21]); 

이 값이 없습니다 그 배열은 단지 5 행과 2 열을 가지고 있기 때문에 그 위치에, 따라서 ArrayIndexOutOfBoundsException. 인덱스 오류가 그대로 두 번째 차원이 예에서 0 또는 1 ... 수 있기 때문에 별도의 라인에 그들을 밖으로 인쇄에 관련하여

, 당신은 System.out.println("...") 대신 phones를 사용 System.out.print("...")

2

의 사용 할 수 있습니다 이 숙제

for (i = 0; i < ROWS; i++) { 
    System.out.print(cellPhoneNumbers[i][0] + " "); 
    int phones = Integer.parseInt(cellPhoneNumbers[i][1]); 
    for (int p = 0; p< phones; p++) { 
     System.out.print("**"); 
    } 
    System.out.println(); 
} 

인가 : 21

는이 코드를 사용할 수 있습니다 인덱스로 휴대 전화의 값을 사용? : D

관련 문제