switch case不起作用,而忽略了方法

时间:2015-10-14 17:24:12

标签: java arrays switch-statement

我正在尝试使用switch语句而不是一系列if / elses,但是当我运行代码时,只有前两种情况正常运行而其他情况被忽略。我已经使用if条件测试了这些方法并且工作正常,但我想使用switch语句。 (有些方法我还没有得到评论)

输入:A 25
输出:25添加到袋子。
输入:F 25
输出:袋子里有(1)25个 输入:S
输出:(无)
预期产量:袋中有1个数字 输入:m
输出:(无)
预期产量:袋中的最小数量为25。

import java.util.Scanner;

public class Bag {

int index = 0;
int[] array = new int[50];

public static void main(String[] args) {
    int x = 0;
    Bag bag = new Bag();

    Scanner scan = new Scanner(System.in);

    while (x == 0) {
    System.out.print("Add(A), Delete(D), Find(F), Size(S), Min(m), Max(M), List(L), Quit(Q) >> ");
    char c = scan.next().charAt(0);
    int y = scan.nextInt();
    switch(c) {
    case 'A': bag.Add(y);
    break;
    //case 'D': bag.Delete(y);
    //break;
    case 'F': bag.Find(y);
    break;
    case 'S': bag.Size();
    break;
    case 'm': bag.Min();
    break;
    case 'M': bag.Max();
    break;
    /*case 'L': bag.List();
    break;
    case 'Q': bag.Quit();*/
    }

}
}
public void Add(int y) {
    array[index] = y;
    index++;
    System.out.println("   " + y + " is added to the Bag. ");
}
  public void Find(int y)
   {
     int count = 0;
     for (int i = 0; i < array.length; i++) {
       if (array[i] == y) {
          count++;
        }
      }
      System.out.println("   There is (" + count + ") " + y
                + " in the Bag.");

          }
public void Size() {
    System.out.println("  There are " + index + " numbers in the Bag.");
}

public void Min() {
    int min = array[0];
    for (int i = 1; i < index; i++) {
        if(min > array[i]) {
            min = array[i];
        }
    }
    System.out.println("   The minimum number in the Bag is " + min + ".");
}
public void Max() {
    int max = array[0];
    for (int i = 1; i < index; i++) {
        if(max < array[i]) {
            max = array[i];
        }
    }
    System.out.println("   The minimum number in the Bag is " + max + ".");
}

}

3 个答案:

答案 0 :(得分:2)

你总是在读一个int,即使在不需要它们的情况下,比如“m”,“M”或“S.如果你输入M <return> 0 <return> ,它会打印最大等等。

答案 1 :(得分:0)

看看你的代码。

std::string

我觉得这样的事情应该有效。

char c = scan.next().charAt(0); //Here you first expect char (program waiting for a input)
int y = scan.nextInt(); //And here you expect int (program waiting for a input)  

答案 2 :(得分:0)

您的问题在于您每次致电this,即使您选择的选项不需要第二个参数。

ButtonHandler方法(例如scan.nextInt()Scanner等)将始终挂起控制台等待您的输入。因为它总是需要两个输入,所以你错过了第二个参数。这就是为什么它没有打印任何东西。

next()