Ich bin wirklich neu in der Informatik und ich weiß, dass ich wahrscheinlich sehr einfache Fehler mache. Ich mache ein Programm, um Zahlen in römische Ziffern umzuwandeln, und meine 'vorherige' Variable funktioniert einfach nicht.Konvertieren von Dezimal in römische Ziffer in Java?
Zur Verdeutlichung bearbeiten: Jede Zahlenkombination nach V (X, L, C, D, M) ist über der Marke. Außerdem behandelt meine Ausgabe die Eingabe vorwärts und rückwärts. Ex: (IV = 6)
Hier sind mein Code:
import java.util.*;
public class roman
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a Roman numeral: ");
String R = in.nextLine();
System.out.println("Converted to Decimal: " + RomanToDecimal(R));
}
static int RomanToDecimal(String R)
{
int Decimal = 0;
char Previous;
for (int x = 0; x < R.length(); x++)
{
Previous = R.charAt(x);
if(R.charAt(x) == 'I')
Decimal += 1;
if(R.charAt(x) == 'V')
{
if (Previous == 'I')
Decimal -= 1;
else
Decimal += 5;
}
if(R.charAt(x) == 'X')
{
if (Previous == 'I')
Decimal-= 1;
else
Decimal+= 10;
}
if(R.charAt(x) == 'L')
{
if (Previous == 'X')
Decimal -= 10;
else
Decimal+=50;
}
if(R.charAt(x) == 'C')
{
if (Previous == 'X')
Decimal -= 10;
else
Decimal += 100;
}
if(R.charAt(x) == 'D')
{
if (Previous == 'C')
Decimal -= 100;
else
Decimal += 500;
}
if(R.charAt(x) == 'M')
{
if (Previous == 'C')
Decimal -= 100;
else
Decimal+= 1000;
}
Previous = R.charAt(x);
}
return Decimal;
}
}
Ich habe so etwas in meine 'for' -Schleife geschrieben, aber das Programm gibt immer noch die gleiche Nummer hin und her. Ich weiß, dass die 'R.charAt()' ist für die Position, aber ich bin mir nicht sicher, wie Sie den Code auf eine Weise schreiben, dass das Programm eine Zahl vor einer anderen registriert. – user6217303
'Zurück = x> 0? R.charAt (x - 1): '\ 0'' oder ähnlich. Sie müssen "ein Zeichen zurück" gehen, aber auch den Fall behandeln, in dem Sie sich beim ersten Zeichen in der Zeichenfolge befinden, und können daher nicht zurückgehen. –