2016-05-22 14 views
0

私はJAVAでプログラミングを学習しています。
MSワードの日付と時刻を正常に印刷するプログラムを作成しましたが、別の機能のMSワードドキュメントに文字列を印刷したいと考えています。私はメインからしか印刷できません。メソッド内のシンボル変数が見つかりません

私のプログラムはここにあります。

はシンボル変数の実行を見つけることができません:私は、構文エラーが発生しましたと言って私のdate()機能でrun.setText(day1);を使用したとき、あなたが見ることができるように

import java.util.*; 

import java.io.*; 

import org.apache.poi.xwpf.usermodel.*; 
public class bill 
{ 

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

//Blank Document 
XWPFDocument document= new XWPFDocument(); 
//Write the Document in file system 
FileOutputStream out = new FileOutputStream("createparagraph.docx"); 

//create Paragraph 
XWPFParagraph paragraph = document.createParagraph(); 
XWPFRun run=paragraph.createRun(); 
bill date1=new bill(); 
String day1=date1.date(); 
run.setText(day1) 
document.write(out); 
out.close(); 
} 

public String date() 
{ 
int day, month, year; 
int second, minute, hour; 
GregorianCalendar date = new GregorianCalendar(); 

    day = date.get(Calendar.DAY_OF_MONTH); 
    month = date.get(Calendar.MONTH); 
    year = date.get(Calendar.YEAR); 

    second = date.get(Calendar.SECOND); 
    minute = date.get(Calendar.MINUTE); 
    hour = date.get(Calendar.HOUR); 

    String day1= String.valueOf(day); 
    String month1= String.valueOf(month); 
     String year1= String.valueOf(year); 
      String second1= String.valueOf(second); 
       String minute1= String.valueOf(minute); 
        String hour1= String.valueOf(hour); 
       run.setText(day1); //here is error * 
    return day1; 

    } 
} 

私は新しいです、私は間違った英語や慣習を使用しています。
これを使用して、さまざまな機能からMSワードでデータを印刷してください。

皆さんが修正プログラムを投稿していただければ、本当に感謝いたします。

EDIT が、私はこれをしなかったが、今は何もあなたの最初の例では、MSワード

import java.util.*; 

import java.io.*; 

import org.apache.poi.xwpf.usermodel.*; 
    public class bill 
{ 

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

//Blank Document 
XWPFDocument document= new XWPFDocument(); 
//Write the Document in file system 
FileOutputStream out = new FileOutputStream("createparagraph.docx"); 
bill date1=new bill(); 
String day1=date1.date(); 
document.write(out); 
out.close(); 
} 

public String date() 
{ 
    int day, month, year; 
    int second, minute, hour; 
    GregorianCalendar date = new GregorianCalendar(); 

    day = date.get(Calendar.DAY_OF_MONTH); 
    month = date.get(Calendar.MONTH); 
    year = date.get(Calendar.YEAR); 

    second = date.get(Calendar.SECOND); 
    minute = date.get(Calendar.MINUTE); 
    hour = date.get(Calendar.HOUR); 

    String day1= String.valueOf(day); 
    String month1= String.valueOf(month); 
     String year1= String.valueOf(year); 
      String second1= String.valueOf(second); 
       String minute1= String.valueOf(minute); 
        String hour1= String.valueOf(hour); 
        XWPFDocument document= new XWPFDocument(); 
        XWPFParagraph paragraph = document.createParagraph(); 
         XWPFRun run=paragraph.createRun(); 
       run.setText(day1+"/"+month1+"/"+year1+"     "+second+":"+minute1+":"+hour1); 

    return day1; 

} 
} 
+0

runを使用する前にメソッド内で宣言/初期化する必要があります。 –

+0

私はそのvishal kamatを試しました.. –

答えて

2

に印刷されなかっなっているあなたの変数はあなたが同じスコープ内にない「実行」するので、あなたは構文エラーを取得しますそれを呼び出す。メソッドの変数は、同じセットの{}内の他のコードによってのみ使用または「参照」できます。
だからこのを動作しませんように、例えば何かのために:

public static void main(String[] args) { 
    int name = "Sally"; 
    sayHi(); 
} 
public void sayHi(){ 
    System.out.println("Hi " + name); 
} 

sayHiメソッドは名前が何であるかを知る方法はありません。あなたは引数としてそれを渡すことができます。

2回目の例では、日付を取得してから何もしないため、2番目の例は機能しません。最初に文書に日付を追加することなく、すぐに文書を書いています。さらに、あなたは日付全体ではなく、その日だけを返しています。

public class Bill { 

    public static void writeDate(XWPFDocument document) { 

     SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy   hh:mm:ss"); 
     String date = sdf.format(new Date()); 

     XWPFParagraph paragraph = document.createParagraph(); 
     XWPFRun run = paragraph.createRun(); 
     run.setText(date); 
    } 

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

     XWPFDocument document = new XWPFDocument(); 
     writeDate(document); 
     FileOutputStream out = new FileOutputStream("createparagraph.docx"); 
     document.write(out); 
     out.close(); 
    } 
} 

いくつかのことを:

私はあなたが求めてきました何をすべき迅速な小さなプログラムを書いています。
私はDate()オブジェクトを使用する自由を取っていましたが、あなたがやっていたことはうまくいくでしょう。

規約では、クラス名をJavaで大文字にします。 即ち

は慣例により

public class Bill { 

であるべきで、メソッド名は、簡潔にその目的を記述するべきです。あなたのメソッド名のdate()は何が起こっているかについてはあまり言いません。

これが意味をなさない場合はお知らせください。

+1

あなたの訂正は良いですが、コードの構造を改善するために(彼はJavaを学んでいるので)、私は 'public static void writeDate(XWPFDocument document)'に行きます。 –

+0

@seanimus omgあなたは戻り指定でクラスを追加しましたか?それは私にとって本当に新しいものです。私たちはそれを行うことができますか?あなたは少し説明できますか?また、すべての関数で使用できるように、 "run"をグローバルに宣言できますか? thanks to alot。 ありがとう。 –

+0

@AlexisDelahaye私はあなたがオブジェクトを送信していることを理解しています..私はwriteDate()をどのように呼び出すでしょうか? –

関連する問題