mumei2018 发表于 2023-8-6 21:23:37

请问如何生成并打印英语序数词 1st 2nd 3rd

中间有一段 打印提示客户输入工人号码这个打印提示输入 可以生成英语的序数词那样的吗?比如Enter the 12nd worker number


package mk;

import java.util.Random;
import java.util.Scanner;

public class ArrayDemo7 {
    public static void main(String[] args) {

      int[] codes = new int;
      Scanner sc = new Scanner(System.in);
      for (int i = 0; i < codes.length; i++) {
            System.out.println("Enter worker number:");
            //这个上面有办法生成英语序数词吗 Enter the 1st/3rd/5th worker number
            int code = sc.nextInt();
            codes = code;
      }
      Random r = new Random();
      for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);
            int temp = codes;
            codes = codes;
            codes = temp;
      }
      for (int i = 0; i < codes.length; i++) {
            System.out.println(codes + " " );
      }
    }
}

学习编程中的Ben 发表于 2023-8-6 21:23:56

根据你的要求,我给出了修改后的Java代码,用于生成并打印英语序数词。以下是完整的修改后的代码:

import java.util.Random;
import java.util.Scanner;

public class ArrayDemo7 {
    public static void main(String[] args) {
      int[] codes = new int;
      Scanner sc = new Scanner(System.in);
      
      for (int i = 0; i < codes.length; i++) {
            System.out.print("Enter the " + getOrdinal(i+1) + " worker number: ");
            int code = sc.nextInt();
            codes = code;
      }
      
      Random r = new Random();
      for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);
            int temp = codes;
            codes = codes;
            codes = temp;
      }
      
      for (int i = 0; i < codes.length; i++) {
            System.out.println(codes);
      }
    }
   
    public static String getOrdinal(int number) {
      if (number == 11 || number == 12 || number == 13) {
            return number + "th";
      } else if (number % 10 == 1) {
            return number + "st";
      } else if (number % 10 == 2) {
            return number + "nd";
      } else if (number % 10 == 3) {
            return number + "rd";
      } else {
            return number + "th";
      }
    }
}


这段代码会提示用户输入工人号码,并且使用英语序数词(1st、2nd、3rd等)进行提示。在getOrdinal()方法中,我们根据给定的数字判断并返回相应的英语序数词。在输入工人号码时,使用getOrdinal(i+1)来获取工人号码对应的序数词。

希望这个代码能满足你的需求。如果你有任何问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-8-6 21:23:57

可以使用一个方法来生成英语的序数词。首先,创建一个方法 getOrdinalNumber ,接收一个整数参数 number ,返回对应的英语序数词。在方法中,首先判断个位数是否为1、2或3,然后根据不同的情况返回对应的序数词。对于其他情况,可以使用默认的序数词规则,即在数字后面添加"th"。以下是修改后的代码:

import java.util.Random;
import java.util.Scanner;

public class ArrayDemo7 {
    public static void main(String[] args) {

      int[] codes = new int;
      Scanner sc = new Scanner(System.in);
      for (int i = 0; i < codes.length; i++) {
            System.out.println("Enter worker number:");
            int code = sc.nextInt();
            codes[ i] = code;
      }
      Random r = new Random();
      for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);
            int temp = codes;
            codes = codes[ i];
            codes[ i] = temp;
      }
      for (int i = 0; i < codes.length; i++) {
            System.out.println("Enter the " + getOrdinalNumber(codes[ i]) + " worker number");
      }
    }

    public static String getOrdinalNumber(int number) {
      if (number >= 10 && number <= 20) {
            return number + "th";
      } else {
            int lastDigit = number % 10;
            switch (lastDigit) {
                case 1:
                  return number + "st";
                case 2:
                  return number + "nd";
                case 3:
                  return number + "rd";
                default:
                  return number + "th";
            }
      }
    }
}


在上述代码中,我们添加了一个 getOrdinalNumber 方法来生成英语的序数词。在主循环中,使用 getOrdinalNumber 方法来打印提示信息。

Mike_python小 发表于 2023-8-6 21:24:00

本帖最后由 Mike_python小 于 2023-8-6 18:25 编辑

要生成并打印英语序数词(1st, 2nd, 3rd),可以编写一个辅助函数来实现。以下是修改后的Java代码:

java
import java.util.Random;
import java.util.Scanner;

public class ArrayDemo7 {
    public static void main(String[] args) {
      int[] codes = new int;
      Scanner sc = new Scanner(System.in);
      for (int i = 0; i < codes.length; i++) {
            System.out.println("Enter the " + getOrdinalNumber(i+1) + " worker number:");
            int code = sc.nextInt();
            codes = code;
      }
      sc.close();

      Random r = new Random();
      for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);
            int temp = codes;
            codes = codes;
            codes = temp;
      }
      for (int i = 0; i < codes.length; i++) {
            System.out.println(codes + " ");
      }
    }

    public static String getOrdinalNumber(int number) {
      if (number % 10 == 1 && number % 100 != 11) {
            return number + "st";
      } else if (number % 10 == 2 && number % 100 != 12) {
            return number + "nd";
      } else if (number % 10 == 3 && number % 100 != 13) {
            return number + "rd";
      } else {
            return number + "th";
      }
    }
}


在上述代码中,我们添加了getOrdinalNumber函数来生成英语的序数词。它接受一个整数作为输入,并返回相应的序数词字符串。然后,在用户输入时,我们使用getOrdinalNumber(i+1)来获取正确的序数词提示。这样,打印提示语句就会变成"Enter the 1st/2nd/3rd/4th/5th worker number:"。

运行修改后的代码,用户将能够根据工人编号输入相应的序数词,并按照打乱后的顺序打印出来。

希望这个回答对你有帮助!如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 请问如何生成并打印英语序数词 1st 2nd 3rd