使用方法重复查找整数

时间:2015-12-09 19:32:51

标签: java methods

你好,我的目的是这样的: 编写一个只能在10到50之间接受值的方法。

样品执行:
输入介于10和50之间的数字左数字输入一个数字:5
输入一个10到50之间的数字
输入一个数字:12
输入的数字:12。输入一个数字:0
再见

所以你可以看到它只在用户输入0时结束。当数字在10到50之间时,它会说不同的东西。我再次删除了我的代码并开始了但是我卡在了一些点上而且我放弃了。我的最终代码是:

import java.util.Scanner;
public class A{

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    System.out.println("Enter case number: ");
    int caseVal = scan.nextInt();

    switch(caseVal){

    case 1:

        System.out.println("Enter a number between 10 and 50");
        System.out.println("Enter a number: ");
        int num = scan.nextInt();
        betweenMethod(num);
        if(num == 0){
            System.out.println("Good Bye");
            break;
        }
        while(num != 0){
            betweenMethod(num);

        }

        break;

    case 2:

        System.out.println("Enter a number to display its divisors: ");
        int x = scan.nextInt();
        System.out.println("The divisors of " + x + " are:");
        divisorsMethod(x);

        break;
    }

    scan.close();

}

public static void divisorsMethod(int a){

    if(a <= 0)
        System.out.println("The number should be greater than 0");
    else{   

    for(int b = 1; b <= a; b++){

        if(a % b == 0 && b != a)
            System.out.print(b + ", ");

        else if(b == a)
            System.out.println(b);
        }
    }
}

public static void betweenMethod(int a){
    Scanner inputscan = new Scanner(System.in);

    if(a >= 10 && a <= 50){
        System.out.println("Enter a number:");
        a = inputscan.nextInt();
    }
    else if((a < 10 || a > 50) && a != 0){
        System.out.println("Enter a number between 10 and 50");
        System.out.println("Enter a number:");
        a = inputscan.nextInt();

    }
    else{
        System.out.println("Good Bye");
    }

inputscan.close();  

}


}

很抱歉未切割版本。它是案例1.我每次尝试它都没有完全工作。如果有人可以帮助我会很感激。如果我没有在规则中写这个问题我很抱歉。(对不起,语法为好吧)

这就是我在哪里STUCK =当我输入0时它不会说GoodBye并结束循环。我需要帮助的地方。

对于每个人都需要回答:我想出了该做什么。基本上我们说虽然它不等于零吗?我写了一个新的方法(在最后一次输入变量之后)检查数字是否为零然后用这种方式打印好再见。它会打印好再见并开始起作用。但是它不能做任何其他事情,因为我们说不等于0.Anyway就是一个解决方案。

1 个答案:

答案 0 :(得分:2)

不要close() System.in

当您致电inputscan.close()关闭基础InputStream时,System.in

返回值

您的方法应该提示两个值之间的输入并返回单个值。此外,您可以将Scanner移至static(或)字段。像

这样的东西
private static Scanner inputscan = new Scanner(System.in);
public static int betweenMethod(final int a, final int b) {
    int min = Math.min(a, b);
    int max = Math.max(a, b);
    while (true) {
        System.out.printf("Please enter a number between %d and %d%n", min, max);
        int in = inputscan.nextInt();
        if ((in == 0) || (in >= min && in <= max)) {
            return in;
        }
    }
}

基元 1 是通过值

循环时,您需要将回调结果分配给您的值。像,

int num = betweenMethod(10, 50);
while (num != 0) {
    System.out.printf("Number Entered: %d.%n", num);
    num = betweenMethod(num);
}
System.out.println("Good Bye");
break;

1 Java中的其他所有内容。