제작하고 있는 코드가 너무 길어 복붙하는데 너무 길 거 같아 똑같은 예제로 만들었습니다.
간단하게 말씀드리자면
변수 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;
}
}
}