控制台不会打印通过方法调用的变量中存储的整数

时间:2019-07-18 02:05:38

标签: java object variables methods

程序提取数字,我希望它继续循环直到用户键入键“ Q” /“ q”。例如,当用户按下“ O”键时,程序应打印他们输入的数字的一位,以此类推,以显示用户输入的任何3位数字。我已经创建了提取数字,十位数和几百位数的方法,并将它们存储在单独的类中的变量中,但是当我尝试打印这些数字时,控制台中什么也没打印。

import java.util.Scanner;

class Methods { 

public Methods (int value) {}

public int hundreds (int num) {
    int hund = (num /100)%10;
    return hund;
}

public int tens (int num) {
    int ten = (num / 10)%10;
    return ten;
}

public int ones (int num) {
    int one = num % 10;
    return one;
}
}


public class DigitExtractor {


public static void main(String[] args)
        throws java.io.IOException {



    char input = ' '; //initialize outside loop
    Scanner s = new Scanner(System.in);


    System.out.print("Input an integer");
    int wholeNumber = s.nextInt();
    Methods num = new Methods(wholeNumber);


    do {
        System.out.println("show (W)hole number.");
        System.out.println("show (O)nes place number.");
        System.out.println("show (T)ens place number.");
        System.out.println("show (H)undreds place number.");
        System.out.println("(Q)uit");
        System.out.println("Enter your choice: ");
        input = s.next().trim().charAt(0); //using scanner only


        if (wholeNumber == 'W' || wholeNumber == 'w') {
            System.out.println("The whole number is: " + wholeNumber);
        } else if (wholeNumber == 'O' || wholeNumber == 'o') {
            System.out.println("The ones place digit is: " + num.ones(wholeNumber));
        } else if (wholeNumber == 'T' || wholeNumber == 't') {
            System.out.println("The tens place digit is: " + num.tens(wholeNumber));
        } else if (wholeNumber == 'H' || wholeNumber == 'H') {
            System.out.println("The hundreds place digit is: " + num.hundreds(wholeNumber));
        }
    } while ((wholeNumber != 'q') && (wholeNumber != 'Q'));
}

}

1 个答案:

答案 0 :(得分:0)

您的代码中有一些问题需要解决才能使其正常工作:

  • Method类必须在DigitExtractor类之外。
  • 您在循环中调用的方法属于Methods类,因此 您必须实例化的构造函数是Methods
  • 您必须从变量input捕获键盘输入。
  • 额外:您需要在代码中加上try / catch。

我对您的代码进行了最少的更正,并且此版本适用于此版本:

import java.util.Scanner;

public class DigitExtractor {

    public static void main(String[] args) throws java.io.IOException {

        try (Scanner input = new Scanner(System.in)){

            System.out.print("Input an integer");
            int integer = input.nextInt();
            Methods num = new Methods(integer);
            char keyboard;

            do {
                System.out.println("show (W)hole number.");
                System.out.println("show (O)nes place number.");
                System.out.println("show (T)ens place number.");
                System.out.println("show (H)undreds place number.");
                System.out.println("(Q)uit");
                System.out.println("Enter your choice: ");
                keyboard = input.next().charAt(0);

                if (keyboard == 'W' || keyboard == 'w') {
                    System.out.println("The whole number is: " + integer);
                } else if (keyboard == 'O' || keyboard == 'o') {
                    System.out.println("The ones place digit is: " + num.ones(integer));
                } else if (keyboard == 'T' || keyboard == 't') {
                    System.out.println("The tens place digit is: " + num.tens(integer));
                } else if (keyboard == 'H' || keyboard == 'H') {
                    System.out.println("The hundreds place digit is: " + num.hundreds(integer));
                }
            } while ((keyboard != 'q') && (keyboard != 'Q'));
        }
    }
}

class Methods { 

    public Methods (int value) {}

    public int hundreds (int num) {
        return (num /100)%10;
    }

    public int tens (int num) {
        return (num / 10)%10;
    }

    public int ones (int num) {
        return num % 10;
    }
}