Ich erstelle ein Programm für die Klasse, das den Mannings-Rechner für den Fluss repliziert. Dabei werden Formeln, iselse, Variablen und Dialogfelder für Nachrichten und Eingaben verwendet. Ich habe das meiste des Programms erstellt, d. H. Die Formeln, Variablen, einige iffelse-Anweisungen, aber ich habe ein Problem, das sich auf das Anzeigen einer resultMessage-Variable als ein JOptionPane-Nachrichtenfeld bezieht. Ich verketten Ausgabe von mehreren Doppel Typ Variablen mit einigen Strings gemischt, das ist, wie es aussieht:Typenkonflikt: Konvertierung von leer in Zeichenfolge in Java nicht möglich
resultMessage=JOptionPane.showMessageDialog(null, "At a depth of "+enteredDepth+"ft the flow is "+ calculatedFlow+" cubic ft per second."+"\n"+ "Difference:"+difference);
Dies wird mir die Fehlermeldung geben, wie im Titel angegeben. Ich bin mir nicht sicher, was das verursachen würde, es ist der einzige verkettete Abschnitt in meinem Code, ich wollte das schnell eingeben, damit ich mir später keine Sorgen machen muss. Einige der Variablen in der Verkettung wurden nicht formuliert, aber das sollte nicht den Fehler, IMO, werfen. Mein gesamtes Programm ist wie folgt:
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);
}
}
Jede Hilfe mit diesem Problem würde sehr geschätzt werden.
Bitte zeigen Sie den genauen Fehler, komplett mit Stack-Trace. Versuchen Sie auch, Ihren Code zu formatieren. Markiere es und drücke Strg + K während der Bearbeitung, um es für dich zu formatieren. – Carcigenicate
Ich versuche, einen Screenshot des Fehlercodes hinzuzufügen, aber dieses Kommentarfeld lässt es nicht zu. – Jkeef
Ich weiß auch nicht, was dieser STRG + K Befehl getan hat, aber alle anderen roten Zeilen, die ich in meinem Code hatte, sind jetzt weg? – Jkeef