Java中的多个字符串输入长度

时间:2018-04-09 06:38:16

标签: java

我正在写一个关于音乐和弦的节目。我希望用户输入A-G或a-g,但它也可以是#或 - (平坦),也可以是m(次要)。 它正在运行,但如果你输入#m,你就得到了

输入音乐钢琴和弦名称: 甲

我需要它继续读取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;
  }
}

1 个答案:

答案 0 :(得分:1)

问题是您要将大写的和弦分配回input块中的if。您需要有一个局部变量,将其重新分配给input

如果您为input分配capNote的值,input的长度将始终为1。

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;