如何将2位数字识别为分隔数字?

时间:2018-11-08 18:51:07

标签: java

因此,基本上,作业说我需要从用户那里得到一个数字'n',并且对于介于1到'n'之间的所有数字,该程序将打印出所有被除以3且没有残差的数字 && 仅打印两个(或一个)位数都等于或小于5的数字,例如,如果用户给出22个程序,则打印3,12,21

那是我目前为止所做的事情(我在问号上放的位置是我很难弄清楚该怎么做的地方),因此该代码尚未编译:

public static void main(String[] args) {
    Scanner get = new Scanner(System.in);
    int num;
    System.out.println("Enter A Random Number: ");
    num = get.nextInt();
    for (int i=1;i>0 && i<=num;i++) {
        if (i%3==0 && ?)
        System.out.println(i);

3 个答案:

答案 0 :(得分:0)

我对您的问题的第二部分有些困惑,但是基于第一部分以及第二部分的内容(应该打印等于或小于5的数字的总和) 这是您的程序的代码:(它应该可以正常运行,如果发现任何问题,请更新我的信息)

    public static void main(String[] args) {
    Scanner get = new Scanner(System.in);
    int num;
    System.out.println("User please enter a number of your choice : ");
    num = get.nextInt();

    for(int x = 1 ; x < num ; x++){
    String number = ""+ x ;
    int sum = 0 ;

    for(int i = 0 ; i < number.length() ; i ++ ){
         sum +=number.charAt(i)-'0' ; }

    if(x % 3 == 0 && sum <= 5){
       System.out.println(x) ; }

    sum = 0 ; 
    }
   }

答案 1 :(得分:0)

可以。因此,您必须遍历每个数字,因此我将其转换为字符串,然后将该字符的正则表达式匹配1到5,然后将其放回另一个字符串中,即可解决该问题。

public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int num;
System.out.println("Enter A Random Number: ");
num =Integer.parseInt(get.nextLine());
for(int i =1;i<=num; i++){

    if(i%3==0){
        String input = Integer.toString(i);
        String toPrint = "";
        for(int j =0 ; j<input.length();j++){
            if(Character.toString(input.charAt(j)).matches("^[1-5]$")){
                toPrint+=Character.toString(input.charAt(j));
            }
        }
               //check the length to avoid cases like 30,60 etc.
                if(input.length()==toPrint.length()){
                System.out.println(toPrint);
        }

    }  
}

}

答案 2 :(得分:0)

  

除以3的残基

如果您了解“无残差”的含义,那么我认为您熟悉模运算。在编程中,我们有取模运算符%,该运算符返回除法运算的余数。因此25 % 8的值为1。您可以使用它来获取数字21 % 10的数字,该数字等于1的数字。要获得十位数,我们需要先将10除以21 / 10 % 10的结果为2。这是有效的,因为整数除法会丢弃余数。