2014-12-10 3 views
0

몇 가지 중요한 도움이 필요합니다. 나는 어디로 가야할지 모른다. 나는 완전히 내 깊이에서 벗어났다.카드 덱에서 읽기

[RANK - SUITE] 형식의 입력 파일에서 카드 코드 목록을 읽어야합니다.

유효한 순위는 : 2-10, J, Q, K, A (조커 퀸 킹, ACE)

유효한 스위트이다 : C, D, H, S (클럽, 다이아몬드, 하트, 스페이드)

는 그럼 난 파일로 출력 할이 필요하므로 입력 파일 2-C있을 것 한 다음 프로그램이 출력 파일에 작성합니다

클럽의

두 - 값 = 2

나 입력 파일을 선택하는 것까지 꽤 많이 들었지만 (나는 아래 코드를 올릴 것이다), 어떻게해야할지 모른다. 각 줄을 읽으려면 .nextline()을 사용해야한다고 생각하고 있지만 어떻게해야할지 모르겠다. 누군가 도울 수 있습니까?

public class CardTest { 
Scanner input = new Scanner(System.in); 

public static void main(String[] args) 
{ 
    inputFile(); 
} 

public static void inputFile() 
{ 
    JFileChooser chooser = new JFileChooser(); 
    Scanner in = null; 
    Scanner console; 

    try { 
    if (chooser.showOpenDialog(null) == JFileChooser.CANCEL_OPTION) 
    { 
     System.exit(0); 
    } 
    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) 
    { 
     File selectedFile = chooser.getSelectedFile(); 
     in = new Scanner(selectedFile); 

    } 
    } 
    catch (FileNotFoundException e) 
    { 
     JOptionPane.showMessageDialog(null, "Could not find the file, please type the file name into dialog box"); 
     System.out.println("Type in your input file"); 
     console = new Scanner(System.in); 
     String selectedFile = console.next(); 
     in = new Scanner(selectedFile); 

    } 
    in.close(); 
} 
+0

연구를 수행 했습니까? 이 문제의 특정 부분에서 문제가 있습니까? –

답변

0

는 방법을 대체합니다. 아래 예.

File file = ...; 
try { 
    Scanner scanner = new Scanner(file); 
    while(scanner.hasNextLine()) { 
     String line = scanner.nextLine(); 
     String[] values = line.split("-"); 
     String rank = values[0].replace("[", "").trim(); 
     String suite = values[1].replace("]", "").trim(); 
     System.out.println(rank + " of " + suite + " - Value = " + rank); // ***** 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

입력 :

[2-C] 

출력 :

2 of C - Value = 2 

당신은 당신의 취향에 맞게 그에 println 기능을 수정해야 할 수 있습니다.

+0

남자에게 물고기를주고 하루 동안 먹이세요. 남자에게 생선을 가르쳐주고 평생 먹여주십시오. 또한 숫자 2를 "2"로, C를 "클럽"으로 변환해야합니다. –

+1

"사람이 불을 피우면 그는 잠시 따뜻해질 것입니다. 불을 지른 사람은 평생 동안 따뜻할 것입니다" –

+0

다시 소개 한 #replace 방법으로 쉽게 가능합니다. – Constant

0

파일을 읽는 방법에 대한 많은 질문/답변이 있습니다. 귀하의 모든 문제를 해결하기 위해 다음 단계로 나누십시오. 또한 대부분의 기술적 세부 사항은 인터넷 검색을 통해 해결할 수 있습니다.

  1. 파일을 한 줄씩 읽습니다. 참조 : https://stackoverflow.com/a/4716623/1688441
  2. 각 행을 구문 분석해야합니다. 당신이 1의 링크를 따라 간다면, 논리적으로 각 라인은 문자열이 될 것입니다. 정규 표현식을 사용할 수도 있고, 문자열을 2 개의 요소의 배열로 나눌 때 split 메소드를 사용할 수도 있습니다. '-'문자를 사용하십시오. 예 : String elements[] = line.substring(1,line.length()-1).split("-").
  3. 그럼 이제 첫 번째 요소가 rank이고 두 번째 요소가 suit 인 두 요소의 배열이 생깁니다.
  4. 짧은 약어를 실제 텍스트 설명으로 변환하는 조회 테이블 (예 : HashMap 사용)이 필요합니다. 이 맵은 클래스 변수 (C 전역 변수) 일 수 있으므로 처음에 초기화해야합니다.
  5. 2 요소 배열을 가져와 텍스트 설명 문으로 변환하고 파일에 쓰는 메서드를 만듭니다.

위의 5 단계를 따르면 문제를 해결하기위한 좋은 로드맵입니다.

문제가 발생할 때마다 예를 들어, 구글에서 검색을 수행

마지막 생각 :

당신에게 사람에게 물고기를주고 하루 먹여주십시오. 남자에게 생선을 가르쳐주고 평생 먹여주십시오.

-Maimonides는

당신은 기존의 문자열 번호로 갈 수
+0

도움 주셔서 감사합니다. 당신의 견적에 관해서는, 나는 컴퓨터 과학 분야에서의 경력을 고려하고 있지 않다. 나는 그것에 대해 충분히 똑똑하지 않다. 이것은 내가 복용하고있는 GE 수업이고 나는 난이도를 과소 평가했다. 당신이 나에게 준 조언을 사용하고 계속 노력하겠습니다. – 2redgoose