【问题标题】:Console not printing the integers stored in the variables which are being called through methods控制台不打印存储在通过方法调用的变量中的整数
【发布时间】:2019-07-18 02:05:38
【问题描述】:

程序提取数字,我希望它继续循环,直到用户键入键“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'));
}

}

【问题讨论】:

  • 我看不到您在哪里使用新输入更新“键盘”。你能粘贴一些输出吗?其他一些奇怪的事情:您将一个整数传递给您的 DigitExtractor 构造函数,但不要对它做任何事情。您似乎在 Methods 类中定义了 one,tens,hudnreds 方法。我看不出它们如何被称为“num.ones(integer)”,因为它们没有在 DigitExtractor 类中定义。
  • 现在检查代码,我拿出键盘,只使用一个扫描仪变量@Jamie

标签: java object variables methods


【解决方案1】:

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

  • 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;
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多