メッセージと入力の式、ifelse、変数、およびダイアログボックスを使用して、Mannings Calculatorを川の流れに対して複製するクラス用のプログラムを作成しています。私は、プログラム、すなわち式、変数、いくつかのifelse文を作成しましたが、JOptionPaneメッセージボックスとしてresultMessage変数を表示することに関連する問題があります。これは私のタイトルで述べたように、エラーメッセージを与えているタイプの不一致:JavaのVoidからStringに変換できない
resultMessage=JOptionPane.showMessageDialog(null, "At a depth of "+enteredDepth+"ft the flow is "+ calculatedFlow+" cubic ft per second."+"\n"+ "Difference:"+difference);
:私は、これは、それがどのように見えるかで、いくつかの文字列が混在する複数のDouble型変数からの出力を連結しています。私はこれを引き起こす原因がわかりません。これはコード内で唯一連結されたセクションであり、私はすぐにこれを入力したいので、後でそれを心配する必要はありません。連結の変数の中には公式化されていないものもありますが、それでもIMOはエラーを投げかけてはいけません。私のプログラム全体は以下の通りです:
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
public class ManningCalculator {
public static void main(String[] args) {
DecimalFormat df=new DecimalFormat("##.00");
//Assigned Constants
final double MANNING_COEFFICIENT = 1.486;
final double COEFFICIENT_BRICK = 0.015;
final double COEFFICIENT_CONCRETE=0.012;
final double COEFFICIENT_ASPHALT= 0.016;
final double COEFFICIENT_GRAVEL= 0.023;
final String MATERIAL_BRICK= "Brick";
final String MATERIAL_CONCRETE="Concrete";
final String MATERIAL_ASPHALT="Asphalt";
final String MATERIAL_GRAVEL="Gravel";
final double TOLERANCE= 0.01;
//input Variables
int attemptNumber;
double desiredFlow;
double maxDepth;
double width;
double roughnessCoefficient;
double deltaHeight=0;
double deltaLength=0;
double enteredDepth;
double calculatedFlow;
double difference;
double minError;
String resultMessage="";
//Math variables
double channelVelocity=0;
double hydraulicRadius=0;
double channelArea=0;
double channelSlope=0;
double wettedPerimeter=0;
//JPane for input variables
desiredFlow=Double.parseDouble(JOptionPane.showInputDialog("Enter desired flow"));
maxDepth= Double.parseDouble(JOptionPane.showInputDialog("Enter the maximum depth"));
width= Double.parseDouble(JOptionPane.showInputDialog("Enter the width"));
roughnessCoefficient=Double.parseDouble(JOptionPane.showInputDialog("Enter choice for roughness coefficient:"+
"\n"+"1 Brick"+"\n"+"2 Concrete"+"\n"+"3 Asphalt"+"\n"+"4 Gravel"));
deltaHeight=Double.parseDouble(JOptionPane.showInputDialog("Enter the change in channel height"));
deltaLength=Double.parseDouble(JOptionPane.showInputDialog("Enter the change in channel length"));
enteredDepth=Double.parseDouble(JOptionPane.showInputDialog("Attempt1"+"\n"+"Enter a depth:"));
//If else if statements
if(roughnessCoefficient==1) {
roughnessCoefficient=COEFFICIENT_BRICK;
}else if(roughnessCoefficient==2) {
roughnessCoefficient=COEFFICIENT_CONCRETE;
}else if(roughnessCoefficient==3) {
roughnessCoefficient=COEFFICIENT_ASPHALT;
}else {
roughnessCoefficient=COEFFICIENT_GRAVEL;
};
if(desiredFlow<0) {
JOptionPane.showInputDialog("Desired flow must be greater than 0");
}else {
JOptionPane.showMessageDialog(null, "Desired flow not valid."+"\n"+"The program terminates");
};
if(enteredDepth<0.0) {
if(enteredDepth>maxDepth) {
JOptionPane.showMessageDialog(null, "Entered depth is not valid."+"\n"+"Desired depth is set to 10.0");
enteredDepth=maxDepth;
}
}
//Math Formulas
desiredFlow=channelVelocity * channelArea;
channelVelocity= (MANNING_COEFFICIENT /roughnessCoefficient) *
Math.pow(hydraulicRadius, (2/3)) *Math.pow(channelSlope, (1/2));
hydraulicRadius =channelArea/wettedPerimeter;
channelSlope=deltaHeight/deltaLength;
resultMessage=JOptionPane.showMessageDialog(null, "At a depth of "+enteredDepth+"ft the flow is "+
calculatedFlow+" cubic ft per second."+"\n"+ "Difference:"+difference);
System.exit(0);
}
}
この問題に関するお手伝いをさせていただきます。
スタックトレースで完全なエラーを表示してください。また、コードをフォーマットしてみてください。それを強調表示し、編集中にctrl + kを押してフォーマットします。 – Carcigenicate
私はエラーコードのスクリーンショットを追加しようとしていますが、このコメントボックスは私に許可しません。 – Jkeef
また、私はCTRL + Kコマンドが何をしたのか分かりませんが、私のコードで他の赤線が消えてしまっていますか? – Jkeef