2015-01-04 1 views
1

이 코드는 수백 개의 이름을 조사하고 그 이름과 의미를 찾습니다. 두 가지 질문이 있습니다. 오류가 발생한 위치를 달성하기 위해 노력하고있는 것은 이름의 의미에 대한 텍스트를 내 그래프의 맨 위에 인쇄하는 것입니다. findingStatistics 두 번, 변수 통계는 이름의 의미에 대한 정보를 보유를 통해 실행 시간으로파일/변수 오류 Java

BabyNames.java:82: error: cannot find symbol 
     String meanings = findingStatistics(console,meaningsFile); 

2 : 1. 어떻게하면이 오류를 해결할 수 있습니다. 그래프를 사용하려면 이름의 인기도에 어떻게 액세스합니까? 지금 나는 통계와 동등한 전체 방법을 가졌습니다. 이것은 단지 의미입니다. 여기

내 코드입니다 : 나는 오류가 있었고이 포함되지 무엇에 //를 추가하는 경우

import java.util.*; 
import java.io.*; 
import java.awt.*; 

public class BabyNames{ //ADD COMMENTS 
    public static final int STARTINGYEAR = 1890; 
    public static final int WIDTH = 60; 
    public static final int HEIGHT = 30; 
    private static String nameFinal; 
    public static void main(String[] args) throws FileNotFoundException{ 
     Scanner console = new Scanner(System.in); 
     DrawingPanel panel = new DrawingPanel(780,560); 
     Graphics g = panel.getGraphics(); 
     Scanner nameFile = new Scanner(new File("names.txt")); 
     Scanner meaningsFile = new Scanner(new File("meanings.txt")); 
     Scanner nameFile2 = new Scanner(new File("names2.txt")); 
     intro(); 
     fixedGraph(g); 
     nameFinal = nameToLowerCase(console); 
     if(STARTINGYEAR == 1890){ 
     findingStatistics(console,nameFile);; 
     changingGraph(console,g); 
     } 
     else{ 
     findingStatistics(console, nameFile2); 
     changingGraph(console,g); 
     } 
     findingStatistics(console,meaningsFile); 
    } 



    public static void intro(){ 
     System.out.println("This program allows you to search through the"); 
     System.out.println("data from the Social Security Administration"); 
     System.out.println("to see how popular a particular name has been"); 
     System.out.println("since 1890"); 
     System.out.println(); 
     System.out.print("Name: "); 
    } 

    public static String nameToLowerCase(Scanner console){ 
     String originalName = console.next(); 
     String name = "" ; 
     int lengthOfName = originalName.length(); 
     String beginingOfName = originalName.substring(0,1).toUpperCase(); 
     String endOfName = originalName.substring(1,lengthOfName).toLowerCase(); 
     name = beginingOfName + endOfName; 
     return name; 
    } 
    public static String findingStatistics(Scanner console, Scanner data){ 
    // String nameFinal = nameToLowerCase(console); 
     boolean goesThroughOnce = false; // 
     String statistics = ""; 
     String currWord = ""; 
     String currLine = ""; 
     while (data.hasNext() && goesThroughOnce == false){ 
     currLine = data.nextLine(); 
     Scanner lineBeingRead = new Scanner(currLine); //make other scanners?? for each file 
     currWord = lineBeingRead.next(); // 

     if (currWord.equals(nameFinal) || currWord.equals(nameFinal.toUpperCase())){ //   
      statistics = currLine; 
      goesThroughOnce = true; 
      System.out.println(statistics); 
     } 
     else{ 
     } 
     } 
     return statistics; 
    } 
    public static void fixedGraph(Graphics g){ //Draws fixed things such as gray blocks and black lines 
     g.setColor(Color.LIGHT_GRAY); 
     g.fillRect(0,0,780,HEIGHT); 
     g.fillRect(0,560-HEIGHT,780,HEIGHT); 
     g.setColor(Color.BLACK); 
     g.drawLine(0,HEIGHT,780,HEIGHT); 
     g.drawLine(0,560-HEIGHT,780,560-HEIGHT); 
    } 

    public static void changingGraph(Scanner console, Graphics g){ 
     String meanings = findingStatistics(console,meaningsFile); 
     g.drawString("" + meanings,0,16); //draws meaning text 
     int startingYear = STARTINGYEAR; 
     int amountOfDecades = 0; 
     if(startingYear == 1890){ 
     amountOfDecades = 13; 
     } 
     else{ 
     amountOfDecades = 8; 
     } 
     g.drawString("" + startingYear,0,552); //fencepost 
     for(int i=0; i<=amountOfDecades;i++){ 
     int year = startingYear + (10 * i); 
     g.drawString("" + year,(WIDTH*i),552); //draws decade numbers 
     }  
    } 
} 

, 그냥 그렇게 하나가 이름에 대한 코드를 더 잘 이해 할 수 있습니다 "아론은"그것은 인쇄해야 아웃 : 얼마

Name: AARON 
Aaron f 0 0 0 0 0 0 0 0 0 883 0 0 0 
AARON m English, Biblical From the Hebrew name ??????? ('Aharon) which is most likely of unknown Egyptian origin. 

, 나는 그것이 그래프에 텍스트를 인쇄 할 수 있도록 노력하고, 의미와 인기 (I 통계에서 둘 다이) 두 개의 변수를 만들고있어.

답변

1

귀하의 changingGraph 방법은 meanings을 해결하기 위해 만을 사용하며, 물론 meaningsFile도 필요합니다. 어쨌든 main에서 전화하기 때문에 에 대한 전화를 changingGraph에서 삭제하는 것이 훨씬 의미가 있습니다.

changingGraph의 서명을 변경하여 meanings을 매개 변수로 사용하고 메서드 본문의 첫 번째 줄을 제거합니다. 그것은 다음과 같이 보일 것입니다.

public static void changingGraph(String meanings, Graphics g){ 
    g.drawString("" + meanings,0,16); //draws meaning text 
    // ... and so on. 

그런 다음, 당신이 그것을 호출 할 때, findingStatistics에 이전 호출에서 반환 된 값을 전달합니다. 그러므로 main 방법을 사용하면됩니다.

if(STARTINGYEAR == 1890){ 
    findingStatistics(console,nameFile); 
    } 
    else{ 
    findingStatistics(console, nameFile2); 
    } 
    String meanings = findingStatistics(console, meaningsFile); 
    changingGraph(meanings, g); 
+0

"의미"가 "인기"라고 생각하십니까? nameFiles에는 인기있는 정보가 들어 있기 때문입니다. 당신은 "findingStatistics (console, meaningsFile)을 찾았습니다;"?? –

+0

아니요, 나는 '의미'가 '인기'라는 뜻이 아니 었습니다. 당신이'main'에서 호출하기 때문에'findingStatistics'에 대한 호출을 취소했습니다. –

+0

그걸로 인기 정보 만 인쇄하고 의미는 아닙니다 –