0

プログラミングクラスへの導入のためにこのプログラムを実行しようとしています。プリントライターを追加する前であっても、エラーがなく、実行できませんでした。ヒントをいただければ幸いです (それを修正する方法と、printwriter を機能させる方法。

package pa2;

import java.io.PrintWriter;
import java.util.Scanner;

public class pa2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

    {

        Scanner keyboard = new Scanner(System.in);

        PrintWriter prw = new PrintWriter ("pa2output.txt");

        // variables
        double tshirt, chips, coke, tax, sale, subtotal, total, tshirtcost, chipscost, cokecost, deposit, cokewdeposit, discount, change, payment, numshirt, numcoke, numchips;
        String name;
        tshirt = 18.95;
        chips = 1.79;
        coke = 2.99;
        deposit = 1.2;
        tax = .06;
        sale = .15;

        // menu
        System.out.print("What is your name? ");
        prw.print("What is your name? ");
        name = keyboard.nextLine();
        System.out.println("Welcome to Denny's " + name + "! " + "We have the following items for sale:");
        prw.print("Welcome to Denny's " + name + "! " + "We have the following items for sale:");
        System.out.println("T-shirt $" + tshirt + "15% off");
        prw.print("T-shirt $" + tshirt + "15% off");
        System.out.println("Chips $" + chips + "15% off");
        prw.print("Chips $" + chips + "15% off");
        System.out.println("Coke $" + coke);
        prw.print("Coke $" + coke);

        // input
        System.out.println("How many T-shirts do you want?");
        prw.print("How many T-shirts do you want?");
        numshirt = keyboard.nextDouble();
        System.out.println("How many bags of patato chips?");
        prw.print("How many bags of patato chips?");
        numchips = keyboard.nextDouble();
        System.out.println("What about 12-pack Coke?");
        prw.print("What about 12-pack Coke?");
        numcoke = keyboard.nextDouble();
        System.out.println("Please enter your payment: ");
        prw.print("Please enter your payment: ");
        payment = keyboard.nextDouble();
        // variables

        cokewdeposit = (deposit * numcoke);
        tshirtcost = (tshirt * numshirt);
        chipscost = (chips * numchips);
        cokecost = (coke * numcoke);
        subtotal = (tshirtcost + chipscost + cokecost + cokewdeposit);
        discount = (sale * subtotal);
        total = subtotal + (subtotal * tax) - discount;
        change = payment - total;

        // calculation
        System.out.println("Your total is $" + total);
        prw.print("Your total is $" + total);
        System.out.println(name + "here is your receipt");
        prw.print(name + "here is your receipt");
        System.out.println("item," + " " + "unit price," + " " + "how many," + " " + "cost");
        prw.print("item," + " " + "unit price," + " " + "how many," + " " + "cost");
        System.out.println("T-shirt ");
        prw.print("T-shirt ");
        System.out.print(tshirt + " " + numshirt + " " + (tshirt * numshirt));
        prw.print(tshirt + " " + numshirt + " " + (tshirt * numshirt));
        System.out.println("Chips ");
        prw.print("Chips ");
        System.out.print(chips + " " + numchips + " " + (chips * numchips));
        prw.print(chips + " " + numchips + " " + (chips * numchips));
        System.out.println("Coke" + coke);
        prw.print("Coke" + coke);
        System.out.print(coke + " " + numcoke + " " + (coke * numcoke));
        prw.print(coke + " " + numcoke + " " + (coke * numcoke));

        // receipt
        System.out.println("Discount " + subtotal);
        prw.print("Discount " + subtotal);
        System.out.println("Discount " + discount);
        prw.print("Discount " + discount);
        System.out.println("Tax " + tax);
        prw.print("Tax " + tax);
        System.out.println("Total " + total);
        prw.print("Total " + total);
        System.out.println("Payment " + payment);
        prw.print("Payment " + payment);
        System.out.println("Your change is " + change);
        prw.print("Your change is " + change);
        System.out.println("Thank you. Come again!");
        prw.print("Thank you. Come again!");


        keyboard.close();
        prw.close();
    }
}
4

2 に答える 2

4

あなたが持っているコードの大きなブロックは、メインの一部ではないため、呼び出されることはありません。1) メインに配置するか、2) メインから呼び出される関数に配置する必要があります。

現時点では、コードがスペースにぶら下がっているだけで、それを呼び出していません。

おそらく、手始めにこれを投げてください:

private static void foo(){ 
   // stick block of code in here
}

次に、次のようにメインから呼び出します。

 public static void main(String [] args){
     foo();
 }
于 2013-09-26T22:33:55.867 に答える
0

受け入れられた回答への簡単な追加。

あなたが書いたコードは、実際には完全に有効な「初期化ブロック」と呼ばれるものにあります。ただし、一般的には変数などを「初期化」するために使用されます。それらでできることには制限があります。(スレッドの生成などの問題)

すなわち:

    int a = 0;
    {
    //Your code
      a=3;
    }

内部のコードはコンパイラによってコンパイル時に実行されますが、コード生成を処理するためのものではありません。変数の初期化のみ。「static」キーワードを使用する以下の例では、一部のコードを実行できますが、通常は必要ありません。

int a=0;
static {
//Your code
a= 3;
// Other stuff
}

より良い計画は、miss.serena が言ったようにすることです。初期化ブロックがどのように機能するかを説明するリンクを次に示します。

于 2014-02-12T17:53:43.347 に答える