Ich habe Probleme herauszufinden, wie mein Code die Zeichenfolge, die von Benutzereingaben gegeben ist, zu erhöhen, so dass, wenn ein Benutzer einen Buchstaben wie z ersetzen möchte gehe zu a, b zu c usw. Der Haken ist, dass ich das tun muss, ohne boolean zu verwenden. Ich soll das bekommen, indem ich Arithmetik verwende, um die Beförderung von z zu a von den Benutzereingaben zu bekommen. Plus muss nur Kleinbuchstaben von a-z sein. Jede Hilfe wäre dankbar, danke.Förderung von Buchstaben in einer Zeichenfolge zum nächsten Buchstaben in Java
Antwort
String s = "q";
char c = s.charAt(0);
c++;
//here you can handle cases like z->a
if (c=='z') c = 'a';
char[] chars = new char[1];
chars[0] = c;
String s1 = new String(chars);
Könnte die Frage verletzen wegen "ich muss dies tun, ohne boolean zu verwenden", das keinen Vergleich/Gleichheit/Bedingungen implizieren kann. – birryree
ok, das könnte folgendermaßen funktionieren: Map
ich würde das 'C++' als 'else'-Bedingung setzen. andernfalls würde man mit "y" gefolgt von "a" kommen. – akf
Map<Character, Character> s = new HashMap<Character, Character>();
s.put('a', 'b');
...
s.put('z', 'a');
String s = "q";
char c = s.charAt(0);
c = s.get(c);
char[] chars = new char[1];
chars[0] = c;
String s1 = new String(chars)
;
Dieses Stück Code
String foo = "abcdefz";
String bar = "";
for (char c : foo.toCharArray()) {
bar += Character.toString((char) (((c - 'a' + 1) % 26) + 'a'));
}
System.out.println(bar);
ausgeben werden
bcdefga
Was sie tut, ist das Zeichen nehmen, den Zeichencode für 'a' subtrahiert, so dass ein Wert von 0 bis 25 angegeben. Dann erhöhen wir 1. Nehmen wir diese Antwort und führen einen Modulus 26 durch. Wenn wir also 'z' haben, subtrahieren wir 'a' und ergeben 25 + 1 = 26, Modulus 26 = 0. Dann fügen wir 'a' hinzu und voilà!
** EDIT **
Sie können sogar das Konzept schieben ein wenig weiter und eine Variable hinzufügen "Verschiebung" Wert:
int shiftValue = 12;
String foo = "abcdefz";
String bar = "";
for (char c : foo.toCharArray()) {
bar += Character.toString((char) (((c - 'a' + shiftValue) % 26) + 'a'));
}
System.out.println(bar);
Will Ausgang
mnopqrl
Die Der Wert shiftValue
kann jede positive ganze Zahl sein (dh Verschiebung -2 ist die gleiche wie Verschiebung 24). Versuch es.
** UPDATE **
Nun, ersetzen Sie einfach Ihre alpha + 1 mit der Gleichung. Nicht, dass ich möchte Sie alles füttern, aber wenn Sie darauf bestehen müssen, hier ist das, was Sie tun müssen:
** HAFTUNGSAUSSCHLUSS **: enthält Ihre Hausaufgaben Lösung
// define some constants
char FIRST_LETTER = 'a'; // the first letter in the alphabet
int ALPHABET_SIZE = 26; // the number of letters in the alphabet
int SHIFT_VALUE = 1; // number of letters to shift
Scanner kb = new Scanner(System.in);
String second = "hello world"; // target string
String alphabet = kb.next();
// TODO: need to check if alphabet has at least one char and if it's in the range of a-z
char alpha = alphabet.charAt(0); // just keep the first char in the input
System.out.println(second.replace(alpha, (char) (((alpha - FIRST_LETTER + SHIFT_VALUE) % ALPHABET_SIZE) + FIRST_LETTER)));
Will Ausgang
l
hemmo wormd
** EDIT 2 **
Wenn Sie eine indexbasierte alph (Für den Fall, dass Sie zusätzliche Zeichen usw. hinzufügen müssen), ist hier eine andere Lösung. Es gibt keinen Kommentar und keine Optimierung, aber der Code funktioniert und sollte selbsterklärend sein ... FYI nur:
int shiftValue = 1;
char[] alphabet = new char[] {
'a','b','c','d','e','f','g','h','i',
'j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z','!',' '
};
boolean[] replace = new boolean[alphabet.length];
Scanner kb = new Scanner(System.in);
String text = "hello world !";
System.out.print("$ ");
String input = kb.nextLine().toLowerCase();
Arrays.fill(replace, false);
for (char c : input.toCharArray()) {
int index = -1;
for (int i=0; i<alphabet.length; i++) {
if (alphabet[i] == c) {
index = i;
break;
}
}
if (index >= 0) {
replace[index] = true;
}
}
for (int i=alphabet.length - 1; i>0; i--) {
if (replace[i]) {
text = text.replace(alphabet[i], alphabet[(i+shiftValue) % alphabet.length]);
}
}
System.out.println(text);
Natürlich wird dieser Code ersetzen jeden von stdin im text
String lesen char.Ein Beispiel für eine Ausgabe wäre:
$ ! e wo
hfllpaxprlda
Also das Segment, mit dem ich bereits Probleme habe, ist: String alphabet = kb.next(); Zeichen alpha = alphabet.charAt (0); System.out.println (zweites replace (alpha, (char) ((int) alpha + 1))); Haben Sie Ideen, wie Sie diesen Codeabschnitt für die Operation ändern können? – CSD1988
Ich hoffe wirklich, dass Sie immer noch da sind, weil ich versuche, dies für einen nicht verwandten Gebrauch von mir zu implementieren. Ich weiß jedoch nicht, welche Sprache das ist oder wie ich sie in meinen Codepen lege. – CelticTree
@CelticTree hey! Nun, das ist in Java, aber fast jede Sprache kann ebenfalls verwendet werden, wie JavaScript (ich nehme an, seit Sie CodePen erwähnen). –
noch eine weitere Option, die ==
Test in einem Schalter versteckt:
public static void main(String[] args)
{
char[] chars = {'a','k','f','z'};
for (char letter : chars) {
char next = letter;
switch (next) {
case 122: // or 'z', either way
next ='a';
break;
default:
next += 1;
}
System.out.println(letter + " is followed by " + next + " ");
}
}
Ich habe folgende Antwort. Es kümmert sich um die weißen Zwischenräume zwischen Zeichenketten. Auch wenn Sie ein 'z' haben, welches das Ende des Alphabets ist, können Sie nicht zum nächsten Zeichen gehen, also habe ich es an den Anfang gesetzt, was ein a ist.
import java.util.Scanner;
public class NextChar {
public static char nextCharacterInAlphabet(char character)
{
char nextChar;
int ascii = (int) character;
if (ascii ==32) //ascii code for a space is 32
/*space stays space that separates the different
strings seperated by the spaces */
nextChar = (char) ascii;
else if (ascii == 122)
/*if the character is a z, then there is no
next character so i let i go back to the first character in alphabet*/
nextChar = (char) (ascii -25); //alphabet has 26 chars, z=26 -25 is first char
else //if the char is not a space or z then it goes to the next char
nextChar = (char) (ascii +1);
return nextChar;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
StringBuffer sb = new StringBuffer(); //to store the characters
for (char c : input.nextLine().toCharArray()) //loops through the char array
{
sb.append(nextCharacterInAlphabet(c)); //appends the chars to the stringbuffer passed to it by the method
}
System.out.println(sb.toString()) ;
}
}
- 1. Zeichenfolge in Buchstaben aufteilen
- 2. Tauschen Sie zwei Buchstaben in einer Zeichenfolge
- 3. Buchstaben zählen auf einer Zeichenfolge
- 4. Ein Programm, das die Buchstaben in der Zeichenfolge in Java
- 5. Wie extrahiere ich in Excel die letzten vier Buchstaben einer Zeichenfolge mit zehn Buchstaben?
- 6. Hinzufügen einer Zahl zu jedem Buchstaben in einer Zeichenfolge
- 7. Konvertieren von Buchstaben in Ziffern
- 8. Inkrementieren einer Zeichenfolge mit Buchstaben und Zahlen
- 9. Get Int von String, auch Buchstaben enthalten, in Java
- 10. Häufigkeit von Buchstaben in einer Textdatei zählen
- 11. Ersatz Buchstaben mit entsprechenden Satz von Buchstaben
- 12. TexToSpeech zum Aussprechen von Buchstaben des Alphabets
- 13. Wörter in Buchstaben in Java aufteilen
- 14. Haskell - Verwandle Buchstaben in Zahlen
- 15. ein Wort brechen in Buchstaben
- 16. Lösche Buchstaben aus der Zeichenfolge
- 17. Zählen der Häufigkeit jedes Buchstaben in einer Zeichenfolge
- 18. Wie entferne ich 3 oder mehr aufeinanderfolgende Buchstaben in Java in 2 aufeinanderfolgende Buchstaben?
- 19. Spiel alpha Buchstaben und akzentuierte alpha Buchstaben
- 20. Bestellen Buchstaben aufsteigend aus einer Textdatei in Java lesen in
- 21. Extrahieren Sie Buchstaben aus einer Zeichenfolge in R
- 22. Ersetzen Sie jeden Buchstaben des Alphabets in einer Zeichenfolge?
- 23. Ersetzen Sie Buchstaben in einer Zeichenfolge mit Python
- 24. Autoinkrementieren von Buchstaben in Perl
- 25. Überspringen von Buchstaben funktioniert nicht beim Eingeben von Buchstaben z
- 26. Teilen von Buchstaben aus Zahlen innerhalb einer Zeichenfolge
- 27. JAVA Komparator für UTF8 Buchstaben
- 28. Regex zum Entfernen von doppelten Buchstaben
- 29. RegEx zum Abgleichen abwechselnd Buchstaben
- 30. Konvertieren von Buchstaben in Zahlen in VBA
Können Sie Vergleichsoperatoren verwenden (obwohl sie in gewissem Sinne boolesch sind)? –
Müssen Sie nur Kleinbuchstaben und nur englisches Alphabet unterstützen? – birryree
Schauen Sie in modulare Ergänzung (haben Sie nicht die Zeit, eine Antwort zu geben/zu testen). Es sollte Ihnen erlauben, die Schleife von 'z' -> 'a' zu bekommen. Konvertiere (lege) den Buchstaben in seinen Ascii-Code (int), subtrahiere bis auf den Bereich 1-26, führe eine modulare Addition durch (füge 1 Mod 26 hinzu), addiere den gleichen Betrag zurück, den du abgezogen hast, um den neuen ASCII-Code zu erhalten zurück zu einem Charakter. –