N
newtojava
Hallo!
Ich bin noch nicht lange mit Java vertraut und muss nun eine aufgabe lösen:
Write a program that calculates the frequency of any single-letter chemical element in a formula.
The EBNF description for valid formul is:
ich hab schon was herumprobiert usw. und irgendetwas passt nicht mit meinem code. Nun wollte ich fragen ob mir jemand helfen kann und mir meinen Fehler korrigieren kann.
lg
mein code:
//Test case:
//CH4:
//CO2:
//BF3:
Ich bin noch nicht lange mit Java vertraut und muss nun eine aufgabe lösen:
Write a program that calculates the frequency of any single-letter chemical element in a formula.
The EBNF description for valid formul is:
Code:
formula = part { part }.
part = element [ subscript ].
element = "H" | "B" | "C" | "N" | "O" | "F" | "P" | "S" | "K" | "V" | "Y" | "I" | "W" | "U".
subscript = digit { digit }.
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
Display the frequency of each element (in ascending order of atomic number, only if greater than
0):
> Please enter a formula: CH4
H: 4
C: 1
> Please enter a formula: CO2
C: 1
O: 2
> Please enter a formula: C6H12O6
H: 12
C: 6
O: 6
> Please enter a formula: CH3CH3
H: 6
C: 2
lg
mein code:
//Test case:
//CH4:
//CO2:
//BF3:
Java:
public class analyseformula {
static String[]atomNames = {"H", "B", "C", "N", "O", "P", "S", "K", "V", "Y", "I", "W", "Sm", "U"};
static int positionOfAtoms (char name){
for(int i=0;i<atomNames.length; i++){
}return -1;
}//Ende positionOfAtoms
public static void main (String[]args){
int []frequencies = new int [atomNames.length];
Out.print("Please enter a formula: ");
while(true){
char ch=In.read();
if(ch=='\n');
continue;
if (ch==In.eof){ //hier zeigts mir ständig eine fehlermeldung
return;
}
int position = positionOfAtoms(ch);
if(position<0){
Out.println("Unknown atom: "+ch);
}
int subscript=In.readInt();
if(!In.done()){
subscript=1;
}
frequencies[position]+=subscript;
for(int i=0;i<atomNames.length; i++){
if (frequencies[i]>0){
Out.print(atomNames[i]+" : "+ frequencies[i]);
}
}
}
}//Ende main
}//Ende class
Zuletzt bearbeitet von einem Moderator: