分隔整数中的数字 - Deitel 的 Java 书中的练习



来自Deitel《Java编程指南》第10版的练习:

2.30(分隔整数中的数字)编写一个应用程序,输入用户的一个由5位数字组成的数字,将该数字分隔成单独的数字,并将每个数字间隔3个空格的数字打印出来。例如,如果用户输入数字42339,程序应该输出

4   2   3   3   9

假设用户输入了正确的位数。当您输入一个超过五位数字的数字时会发生什么?当您输入少于五位数的数字时会发生什么?[提示:你可以用本章学到的技巧来做这个练习。你需要同时使用除法和提醒操作来"剔除"每一个数字。]

有人能告诉我应该如何使用除法和提醒运算符"挑选"单个整数吗?

编辑:控制结构(if/else等)还不允许,这些将在以后的章节中探讨。

你知道这个数字是5位数长

number / 10 000 to retrieve the first digit.
number = reminder
number / 1000 to retrieve the second digit.
number = reminder
number / 100 to retrieve the third digit.
number = reminder
number / 10 to retrieve the fourth digit.
and reminder is the 5th one.

以下是输入

后按相同顺序显示数字的答案
import java.util.Scanner;
public class oddMethod {
    public static void main(String[] args) {
        System.out.println("Enter start number:");
        int number=getNumber();
        int last=Reverse1stTime(number);
        System.out.println("Digit You Enter:"+last);
    }
    private static int getNumber() {
        Scanner sr = new Scanner(System.in);
        return sr.nextInt();
    }
    private static int Reverse1stTime(int number)
    { int  digit=0;
    int reverse=0;
        while(number>0)
        {
            digit=number%10;
            reverse=reverse*10+digit;
            number=number/10;
        }
       return reverseAgain(reverse);
    }
    private static int reverseAgain(int number)
    { int  digit=0;
        int reverse=0;
        while(number>0)
        {
            digit=number%10;
            System.out.println(digit);
            reverse=(reverse*10+digit);
            number=number/10;
        }
        return reverse;
    }
}
Input 12345
Output 12345

关于除法的小提示-你可以除以10,然后看一下,这个操作给出了什么…此外,如果你想学习编程,你必须推断。

我也刚刚开始使用java和这本书,这是为我做了这一切的代码。如果我做了一些奇怪的事情,请原谅我…:)

import java.util.Scanner;
public class SeparateNumber
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int nr, nr1, nr2, nr3, nr4, nr5;
        System.out.print("Enter a number with 5 digits: ");
        nr = in.nextInt();
        nr1 = nr / 10000;
        nr2 = (nr % 10000) / 1000;
        nr3 = ((nr % 10000) % 1000) / 100;
        nr4 = (((nr % 10000) % 1000) % 100) / 10;
        nr5 = (((nr % 10000) % 1000) % 100) % 10;
        System.out.printf("%d%s%d%s%d%s%d%s%d%n", nr1, " ", nr2, " ", nr3, " ", nr4, " ", nr5);
    }
}

试试这个:

import java.util.*;
public class DigitsDisplay
{
    public static void main (String[] args)
    {
        Scanner input = new Scanner (System.in);
        int digit;
        System.out.print("Enter a positive number: ");
        digit = input.nextInt();
        int power = 1;
        while (power <= digit) {
            power *= 10;
        }
        power /= 10;
        while (power > 0) {
            System.out.println(digit/power);
            digit %= power;
            power /= 10;
        }
    }
}

试试这样

String str1 = "";
int a = 12345;
while(a>0)
{
  int b = a%10;
  str1 = str1 + String.valueOf(b+" ");
  a = a/10;
}
StringBuilder str = new StringBuilder(str1);
System.out.println(str.reverse());

下面的代码处理对整数范围内的任何int进行分割。

步骤:

  1. 将int转换为String
  2. 使用Integer.parseInt
  3. 将String的每个字符转换为整型
  4. 在int[]中存储整型数字
  5. 打印int []

示例代码:

import java.util.*;
public class SplitDigits{
    public static void main(String args[]) throws Exception {
        System.out.println("Enter number:");
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        System.out.println("You have entered:"+number);
        String str = String.valueOf(number);
        int length = str.length();
        if ( length > 0){
            int[] digits = new int[length];
            for ( int i=0; i < length; i++){
                digits[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
            }
            for ( int i=0; i < digits.length; i++){
                System.out.println("Digits:"+digits[i]);
            }
        }
    }
}
输出:

java SplitDigits
Enter number:
123456789
You have entered:123456789
Digits:1
Digits:2
Digits:3
Digits:4
Digits:5
Digits:6
Digits:7
Digits:8
Digits:9
import java.util.Scanner;  
public class DigitSeparator{  
    public static void main(String[] args){  
        Scanner input = new Scanner(System.in);  
        System.out.print("Enter a 5 digit number: ");  
        int number = input.nextInt();  
        System.out.print((number / 10000)+ "   ");   
        int divider = 10000;  
        int mod = number % 10000;  
        for(int i = 1; i <= 4; i++){  
            divider /= 10;  
            System.out.print( mod/divider +"   ");  
            mod %= divider;         
        }  
        System.out.println();  
    }  
}  
first import java.util.Scanner; berfore your 
class.
and write this code in your main method.
Scanner input = new Scanner(System.in);
System.out.print("Enter a five digit number: ");
     int number = input.nextInt();
     int first_digit = number / 10000;
     int second_digit = (number % 10000) / 1000 ;
     int third_digit = (number % 1000) / 100;
     int fourth_digit = (number % 100) / 10;
     int fifth_digit = (number % 10);
     System.out.printf("%d   %d   %d   %d   
     %d%n", first_digit, second_digit, third_digit, fourth_digit, fifth_digit);
package chapter1;
import java.util.Scanner;
public class Exercise3 {
    public static void main (String[] args){
    Scanner scan = new Scanner (System.in);
    System.out.print ("Enter a number that consist of 5 digits: ");
    int num =scan.nextInt();
    int digit1 =num / 10000;
    int digit2 =(( num % 10000) / 1000 );  // the modulus answer of num/10000 is divided by 1000
    int digit3 =( ( num % 1000) / 100 );
    int digit4 = ( ( num% 100 ) / 10 );
    int digit5 = ( num % 10);
    System.out.print (digit1+"t");
    System.out.print(digit2+"t");
    System.out.print(digit3+"t");
    System.out.print(digit4+"t");
    System.out.println(digit5+"t");
    }

}

答案是:

//your package name
import java.util.Scanner; //for input the userin
public class SeperateDigit {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.printf("Enter a 5 digit number: ");
        int number = input.nextInt();
        int number1 = number/100000;
        int arrange = number%10000;
        int number2 = arrange/1000;
        int number3 = (arrange % 1000) /100;
        int number4 =(( arrange % 1000) % 100) / 10;
        int number5 = ((arrange % 1000) % 100) % 10;
        System.out.printf("%d %d %d %d %d", number1,number2,number3,number4, number5);
    }
}

and Result is

Enter a 5 digit number: 422339
4 2 3 3 9

最新更新