positivesmile
50
2017-11-28 15:11:34 작성 2017-11-29 17:00:42 수정됨
2
799

StringTokenizer 클래스 관련 - 구분문자를 통해 값을 불러올 때


제작하고 있는 코드가 너무 길어 복붙하는데 너무 길 거 같아 똑같은 예제로 만들었습니다.

간단하게 말씀드리자면

변수 4개를 선언하고 값을 scanner 로 입력받아 저장하는 건데요


저장하는 case 1번에서

String txt = "첫번째 값 :" + a1 + "," + "두번째 값 :"+ b1 +"," + "세번째 값:" + c1 + "," + "네번째 값:" + d1 + "/"; 으로 적고


case 2번에서 StringTokenizer 를 사용하여 구분문자를 통해 값을 불러오고 String txt로 불러온 값을 

Integer.parseInt 를 통해 형 변환을 하여 불러오기를 하고 있습니다.

여기서 불러올떄 


                                                String A = token.nextToken("첫번째 값 : " + ",");

						int a2 = Integer.parseInt(A);

						a1 = a2;

						

						String B = token.nextToken("두번째 값 : " + ",");

						int b2 = Integer.parseInt(B);

						b1 = b2;

						

						

						String C = token.nextToken("세번째 값 : " + ",");

						int c2 = Integer.parseInt(C);

						c1 = c2;

						

						

						String D = token.nextToken("네번째 값 : " + "/");

                                                 //String D = token.nextToken(",네번째 값:"+"/");

						int d2 = Integer.parseInt(D);

						d1 = d2;



이렇게 하면 컴파일하는데서 마지막 네번째 값앞에 ,가 있어서 오류가 발생합니다.

주석처리된 것처럼 <",네번째 값:"+"/"> 을 하게 되면 오류가 발생하지 않는데요.


여기서 궁금한게

StringTokenizer는 순차적으로 a1 b1 c1 d1을 가져올때 앞의 구분문자랑 뒤의 구분문자 사이에 존재하는 값을 가져오는건가요?

b1을 가져오려면 ( ",두번째 값:" + "," ) 이렇게 쓰는게 정상적인 표현인건가요?

String txt = "첫번째 값 :" + a1 + "," + "두번째 값 :"+ b1 +"," + "세번째 값:" + c1 + "," + "네번째 값:" + d1 + "/";



-------------------------------------------------------------------------------------------------------------------------------------------



import java.io.*;

import java.util.*;



public class test 

{

	static test ts = new test();

	

	public void pause()

	{

		System.out.println("계속하려면 Enter를 누르세요.");

		try

		{

			System.in.read();

		}

		catch(IOException e) {}

	}

	public static void main(String[] args) throws IOException

	{

		int a,b,c,d;

		int a1,b1,c1,d1;

		

		Scanner sc = new Scanner(System.in);

		

		System.out.println("1. 저장 / 2. 불러오기");

		switch(sc.nextInt())

		{

		case 1:

			try

			{



				

				System.out.println("첫번째 값 : ");

				a = sc.nextInt();

				a1 = a;

				

				System.out.println("두번째 값 : ");

				b = sc.nextInt();

				b1 = b;

				

				System.out.println("세번째 값 : ");

				c = sc.nextInt();

				c1 = c;

				

				System.out.println("네번째 값 : ");

				d = sc.nextInt();

				d1 = d;

				

				File file = new File("ASDF.txt");

				FileWriter fw = new FileWriter(file);

				BufferedWriter bw = new BufferedWriter(fw);

				

				String txt = "첫번째 값 :" + a1 + "," + "두번째 값 :"+ b1 +"," + "세번째 값:" + c1 + "," + "네번째 값:" + d1 + "/";

				bw.write(txt);

				bw.write("\r\n");

				

				if(null!= bw)

				{

					System.out.println("ASDF.txt 생성완료");

					ts.pause();

				}

				bw.close();

			}

			

			catch(Exception e)

			{

			e.printStackTrace();

			}

			break;

		case 2:

			try

			{

				FileReader fr = new FileReader("ASDF.txt");

				BufferedReader br = new BufferedReader(fr);

				

				String txt;

				

				while((txt = br.readLine())!= null)

				{

					StringTokenizer token = new StringTokenizer(txt, "/");

					while(token.hasMoreTokens())

					{

						String A = token.nextToken("첫번째 값 : " + ",");

						int a2 = Integer.parseInt(A);

						a1 = a2;

						System.out.println(a1);

						

						String B = token.nextToken("두번째 값 : " + ",");

						int b2 = Integer.parseInt(B);

						b1 = b2;

						System.out.println(b1);

						

						String C = token.nextToken("세번째 값 : " + ",");

						int c2 = Integer.parseInt(C);

						c1 = c2;

						System.out.println(c1);

						

						String D = token.nextToken(",네번째 값 : " + "/");

						int d2 = Integer.parseInt(D);

						d1 = d2;

						System.out.println(d1);

					}

				}

				if(null!= br)

				{

					System.out.println("ASDF.txt 불러오기 완료");

					ts.pause();

				}

			}

			catch(Exception e)

			{

				e.printStackTrace();

			}

			break;

		}

	}	

}



0
0
  • 답변 2

  • bayleys
    1k
    2017-11-28 17:57:51 작성 2017-11-29 17:04:23 수정됨


    String txt = "첫번째 값 :" + a1 + "," + "두번째 값 :"+ b1 +"," + "세번째 값:" + c1 + "," + "네번째 값:" + d1 + "/";





    String txt = a1+","+b1+","+c1+","+d1;


    으로 저장하고....



    ,(comma)로 string tokenizing 하면 쉽게 될텐데요.....


    1
  • OKKY
    1k
    2017-11-29 16:57:34

    <OKKY Q&A 원칙>

    • 태그는 꼭 2개 이상 달아주세요.
    • 코드를 쓰실 때는 꼭 코드 블록을 사용해 주세요.
    • 제목은 내용을 알 수 있도록 직관적이고 구체적으로 작성해 주세요.


    *참고 : OKKY Q&A 운영 안내 (https://okky.kr/article/423650)

    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.