-1

基本的に、continue変数が「Y」に等しい限り、新しいクラスを作成しようとしています。私が抱えている問題は

DigitalMain.java:18: not a statement
    DigitalPhoto[] class = new DigitalPhoto[9];

コンパイル時。ArrayListsを見てきましたが、私が達成しようとしているのと同じ方法でクラスをインスタンス化できるかどうかはよくわかりません。理想的な状況では、「class」+ iという名前のオブジェクトがあり、組み込みのsetメソッドを介してオブジェクトごとに異なる値があります。

// Import classes for class
import java.util.Arrays;
import java.util.List;
import javax.swing.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class DigitalMain
{
  public static void main(String args[])
  {
    String cont = "Y";
    String heightString,widthString,width,bitpsString;
    double bitps,x,y,totesPrice,totesSize,totesSpeed;
    DecimalFormat wholeDigits = new DecimalFormat("0");
    DecimalFormat dec = new DecimalFormat("0.00");

    DigitalPhoto[] picc = new DigitalPhoto[20];
    for(int i=0; cont.equals("Y") ; i++)
    {
    picc[i] = new DigitalPhoto();
    heightString = JOptionPane.showInputDialog("Please enter height");
    picc[i].setHeight = Double.parseDouble(heightString);
    heightString = JOptionPane.showInputDialog("Please enter width");
    picc[i].setWidth = Double.parseDouble(widthString);
    continueQuestion = JOptionPane.showInputDialog("Height: " + picc[i].getHeight + "\n Width: " + picc[i].getWidth + "\n Resolution: " + picc[i].getResolution + "\n Compression Ratio: " + picc[i].getCompression + "\n Required Storage: " + picc[i].calcStorage() + "\n Price of Scanned Photo: " + picc[i].getCost() + "Please enter 'Y' to try again or anything but 'Y' to accept values.");
    };


    do
    {
    bitpsString = JOptionPane.showInputDialog("Please enter your internet connection speed. Must be an integer between 1 and 99999999");
    bitps = Double.parseDouble(bitpsString);
    } while (bitps > 0 && bitps < 99999999);
    picc0.setSpeed(bitps);

    for(y = 0; y<picc.length; y++) {
      totesPrice += picc+y.getCost();
      totesSize += picc+y.calcStorage();
      totesSpeed = picc0.getSpeed();
    }

    double seconds = transferTime(totesSize, totesSpeed);
    double minutes = seconds / 60;
    double realsec = seconds % 60;

    JOptionPane.showMessageDialog(null, "You will be paying: " + totesPrice + "\nRequired Storage is: " + totesSize + "Required time for transfer is: " + wholeDigits.format(minutes) + " minutes, and " + wholeDigits.format(realsec) + " seconds.");

  }

  public static double transferTime(double totalStorage, double netSpeed) {
    double bits, seconds;
    bits = (totalStorage * 8);
    seconds = (bits / netSpeed);
    return seconds;
    };
}
4

4 に答える 4

3

classキーワードです-変数名として使用することはできません。

さらに、ここには奇妙な構成があります。

for(int i=0; cont.equals("Y") ; i++)
{
    ...
} while {continue.equalsIgnoreCase(Y)};

「for/while」ループのようなものはありません。通常のforループ、whileループ、およびdo/whileループがあります。

つまり、実際にはループのfor後に無効なwhileループが続きます。状態はありません。

あなたはあなたが望むものを解決する必要があります。(おそらく、 do / whileループを含むforループですが、内部ループを別のメソッドに抽出します。一般に、コードは複数のメソッドに分割することで大きなメリットが得られます。

今回はdo/ while:を使用しますが、後で同様のことを行います。

do
{
    ...
} while {bitps > 0 && bitps < 99999999};

whileループの条件は、中括弧ではなく括弧で囲みます。

do
{
    ...
} while (bitps > 0 && bitps < 99999999);

基本的に、ループで使用できる構文オプションを確認する必要があります。

于 2012-04-30T05:21:48.870 に答える
1

問題はおそらくアレイの名前です。この単語classはJava言語のキーワードであるため、変数に名前を付けるために使用することはできません。ArrayLists次のように使用することもできます。

List<DigitalPhoto> photoes = new ArrayList<DigitalPhoto>(); 
do
    {
    DigitalPhoto photo = new DigitalPhoto();
    heightString = JOptionPane.showInputDialog('Please enter height');
    photo .setHeight = double.parseDouble(heightString);
    heightString = JOptionPane.showInputDialog('Please enter width');
    photo .setWidth = double.parseDouble(widthtString);
    photos.add(photo)
    continueQuestion = JOptionPane.showInputDialog('Height: ' + class[i].getHeight + '\n\lWidth: ' + class[i].getWidth + '\n\l Resolution: ' + class[i].getResolution + '\n\lCompression Ratio: ' + class[i].getCompression + '\n\lRequired Storage: ' + class[i].calcStorage() + '\n\lPrice of Scanned Photo: ' + class[i].getCost() + 'Please enter "Y" to try again or anything but "Y" to accept values.')
    } while {cont.equals("Y")};
于 2012-04-30T05:24:37.463 に答える
1

使用しているループの種類。

for(...)
{
...
}while();

for-whileループはありません。

また、forループ条件がfalseになることはありません。forループに適切な条件を設定します。また、ループ
に構文エラーがあります。for-whileすなわち。最後のステートメント

continueQuestion = JOptionPane.showInputDialog('Height: ' + class[i].getHeight + '\n\lWidth: ' + class[i].getWidth + '\n\l Resolution: ' + class[i].getResolution + '\n\lCompression Ratio: ' + class[i].getCompression + '\n\lRequired Storage: ' + class[i].calcStorage() + '\n\lPrice of Scanned Photo: ' + class[i].getCost() + 'Please enter "Y" to try again or anything but "Y" to accept values.') // you miss the ;     
于 2012-04-30T05:38:42.943 に答える
0

変数の命名にはいくつかの規則があります変数

 You cannot use any of the following(in list of keywords) as identifiers in your
 programs.The keywords const and goto are reserved, even though they are not 
 currently used. true, false, and null might seem like keywords, but they 
 are actually literals;      you cannot use them as identifiers in your programs.

キーワードのリスト

for(int i=0; cont.equals("Y") ; i++)
 {
   class[i] = new DigitalPhoto();
   heightString = JOptionPane.showInputDialog('Please enter height');
   class[i].setHeight = double.parseDouble(heightString);
   heightString = JOptionPane.showInputDialog('Please enter width');
   class[i].setWidth = double.parseDouble(widthtString);
   continueQuestion = JOptionPane.showInputDialog('Height: ' + 
   class[i].getHeight + '\n\lWidth: ' + class[i].getWidth + '\n\l Resolution: ' +
   class[i].getResolution + '\n\lCompression Ratio: ' +  class[i].getCompression +
  '\n\lRequired Storage: ' + class[i].calcStorage() + '\n\lPrice of Scanned Photo: ' + 
    class[i].getCost() + 'Please enter "Y" to 
   try again or anything but "Y" to accept values.')
} while {continue.equalsIgnoreCase(Y)};

ここで私はループを知りませんfor-while..いくつかの基本をチェックしてください..Javaの
ループ

于 2012-04-30T05:43:49.933 に答える