2016-07-21 2 views
2

다른 프로그램이 열고 읽을 수 있도록 .txt 파일을 만들고 쓰려고합니다. 문제는 입력 된 데이터가 생성 된 파일에 기록되지 않는다는 것입니다. 빈 .txt 문서입니다.입력 한 데이터가 파일에 쓰여지지 않습니다.

import java.util.Scanner; 
import java. io.*; //import class for file input. 
public class inventoryStock 
{ 
    public static void main(String args[]) throws Exception 
    { 
    //Declarations 
    String[] itemName = new String [10]; 
    double[] itemCost = new double [10]; 
    double[] inStockNumber = new double [10]; 
    int counter = 0; 
    //End declarations 

    Scanner input = new Scanner (System.in); 
    //Open output file. 
    FileWriter fw = new FileWriter("updatedStock.txt"); 
    PrintWriter pw = new PrintWriter(fw); 


     do 
     { 
     System.out.print("Enter item name"); 
     pw.println(); 
     itemName[counter] = input.next(); 
     System.out.print("Enter item cost"); 
     pw.println(); 
     itemCost[counter] = input.nextDouble(); 
     System.out.print("Enter Number in stock"); 
     pw.println(); 
     inStockNumber[counter] = input.nextDouble(); 

     counter += 1; 
     }while(counter<10); 
     pw.flush(); 

    pw.close(); 
    System.exit(0); 
    } //End of main method 
} //End of InventoryStock class. 
+0

스택 오버플로에 오신 것을 환영합니다. 문제 해결에 도움이 필요하면 실제 코드를 보여줘야합니다. 내 머리 꼭대기에서 어쩌면 버퍼를 디스크로 플러시하지 않을 수도 있습니다. –

+0

왜 pw.close(); 앞에 여분의 '{''do'와 추가'} '가 있습니까? – Bill

+0

나는 초보자이며 지난 번 중괄호를 사용하지 않아서 비난을 받았다. 또한 이므 란, 세부 루프에서 입력을 얻으려고합니다. 스캐너 항목을 추가하기 전에 "항목 이름 입력" "항목 비용 입력" "재고 수량 입력" –

답변

1

실제로 파일을 작성하지 않은 것으로 보입니다. 아래 코드를 사용해보십시오.

두 가지 권장 사항.

  1. 크기 10은 코드의 모든 부분에 있으므로 보다 나은 유지 보수를 위해 단일 변수로 추출하는 것이 좋습니다.
  2. Java의 naming convention을 따르십시오. 귀하의 경우, 클래스 이름의 첫 글자는 대문자이어야합니다. inventoryStock 대신 InventoryStock을 사용하십시오.

전체 코드는 아래와 같습니다. 도움이되기를 바랍니다. 고마워.

import java.util.Scanner; 
import java.io.*; //import class for file input. 

public class InventoryStock { 
    public static void main(String args[]) throws Exception { 

     int size = 10; 
     // Declarations 
     String[] itemName = new String[size]; 
     double[] itemCost = new double[size]; 
     double[] inStockNumber = new double[size]; 
     int counter = 0; 
     // End declarations 

     Scanner input = new Scanner(System.in); 
     // Open output file. 
     FileWriter fw = new FileWriter("updatedStock.txt"); 
     PrintWriter pw = new PrintWriter(fw); 

     { 
      do { 
       System.out.print("Enter item name"); 
       itemName[counter] = input.next(); 
       System.out.print("Enter item cost"); 
       itemCost[counter] = input.nextDouble(); 
       System.out.print("Enter Number in stock"); 
       inStockNumber[counter] = input.nextDouble(); 

       pw.println(itemName[counter] + ", " + itemCost[counter] + ", " + inStockNumber[counter]); 

       counter += 1; 
      } while (counter < size); 
      fw.flush(); 
     } 
     fw.close(); 
     System.exit(0); 
    } // End of main method 
} // End of InventoryStock class. 
+0

이것은 내가 찾는 것을 얻는 좋은 방법이기도합니다. 그래서 내가 가진 것은 잘못되었지만 원래 생각했던 것만 큼 나쁘지 않았습니다. 너희들은 너의 도움에 큰 감사를드립니다. Gearon @Gearon –

+0

당신을 진심으로 환영합니다. – Gearon

0

당신은 input.next()와 사용자의 입력을 잡아에도 불구하고 실제로 파일에 기록하거나 다른 사람이 아무것도하지 않습니다 PrintWriter 얘기해야합니다. 다음과 같이 시도하십시오.

Scanner input = new Scanner (System.in); 
//Open output file. 
FileWriter fw = new FileWriter("updatedStock.txt"); 
PrintWriter pw = new PrintWriter(fw, true); 

do 
{ 
    System.out.print("Enter item name");  
    itemName[counter] = input.next(); 
    pw.write(itemName[counter]); 
    pw.println(); 

    System.out.print("Enter item cost"); 
    itemCost[counter] = input.nextDouble(); 
    pw.write(String.valueOf(itemCost[counter])); 
    pw.println(); 

    System.out.print("Enter Number in stock"); 
    inStockNumber[counter] = input.nextDouble(); 
    pw.write(String.valueOf(inStockNumber[counter])); 
    pw.println(); 

    counter += 1; 
}while(counter<10); 

pw.flush(); 
pw.close(); 
System.exit(0); 
+0

그 도움은 트릭에 많은 도움을주었습니다. 나는 아직도이 모든 트릭과 내가 원하는 효과를 얻기 위해 사용 된 언어를 배우려고 노력하고있다. 고맙습니다. @ quidproquo –

관련 문제