[英]Multiple String input lengths in Java
我正在寫一個關於音樂和弦的程序。 我希望用戶輸入AG或ag,但也可以是#或-(平),也可以是m(小)。 它正在運行,但是如果您輸入#m,則會得到
輸入音樂和弦名稱:A
我需要它來繼續閱讀if語句,以便如果輸入的是3個字符,則可以描述該char應該是什么。
我還沒有添加有關急件和平底鞋的部分。
import java.util.Scanner;
public class Hwk9 {
public static void main(String[] args) {
String chord;
Scanner stdin = new Scanner(System.in);
System.out.println("Enter a musical piano chord name: ");
chord = stdin.nextLine();
String finalChord = validChord(chord);
System.out.println(finalChord);
}
public static String validChord(String input) {
if (input.length() > 3 && input.length() < 1) {
input = "Invalid chord";
}
char note = input.charAt(0);
char capNote = chordCapitalize(note);
if (capNote == 'A') {
input = capNote + "";
}
else if (capNote == 'B') {
input = capNote + "";
}
else if (capNote == 'C') {
input = capNote + "";
}
else if (capNote == 'D') {
input = capNote + "";
}
else if (capNote == 'E') {
input = capNote + "";
}
else if (capNote == 'F') {
input = capNote + "";
}
else if (capNote == 'G') {
input = capNote + "";
}
else {
input = "Invalid chord";
}
if (input.length() == 3) { *<<<<<<This section is not going through*
char minor = input.charAt(2);
if (minor == 'm') {
input = capNote + "" + minor;
}
else {
input = "Invalid chord";
}
}
return input;
}
public static char chordCapitalize(char input) {
String note = input + "";
String caps = note.toUpperCase();
char capNote = caps.charAt(0);
return capNote;
}
}
問題是您將大寫和弦分配回if
塊中的input
。 您需要為此設置一個局部變量,而不是將其重新分配為input
如果分配input
的值capNote
,長度input
將永遠是一個。
String result;
if (capNote == 'A') {
result = capNote + "";
}
else if (capNote == 'B') {
result = capNote + "";
}
//Rest of code
if (input.length() == 3) {
char minor = input.charAt(2);
if (minor == 'm') {
result = capNote + "" + minor;
}
else {
result = "Invalid chord";
}
}
return result;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.