题目描述
Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:
如22:twenty two,123:one hundred and twenty three。
说明:
数字为正整数,长度不超过九位,不考虑小数,转化结果为英文小写;
输出格式为twenty two;
非法数据请返回“error”;
关键字提示:and,billion,million,thousand,hundred。
方法原型:public static String parse(long num)
输入描述:
输入一个long型整数
输出描述:
输出相应的英文写法
输入
2356
输出
two thousand three hundred and fifty six
1 import java.util.*; 2 public class Main { 3 public static void main(String[] args) { 4 Scanner sc=new Scanner(System.in); 5 while(sc.hasNext()){//需考虑循环输入 而非单个输入 6 String n=sc.nextLine(); 7 if (n.length()>9||n.contains(".")) { 8 System.out.println("error"); 9 } 10 else { 11 int da=Integer.parseInt(n); 12 System.out.println(defineOut(da));//按照百亿、百万、千进行讨论 13 14 } 15 } 16 } 17 //处理千以内的数 18 private static String defineOut3(int da) { 19 String[] num1= {"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; 20 String[] num2 = { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen","seventeen", "eighteen", "nineteen" }; 21 String[] num3 = { "","","twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty","ninety" }; 22 String result=""; 23 int bai=da/100; 24 int shi=da%100/10; 25 int ge=da%10; 26 if (bai!=0) { 27 result=num1[bai]+" "+"hundred and "; 28 } 29 if (shi!=0&&shi>=2) { 30 result=result+num3[shi]; 31 if (ge!=0) { 32 result=result+" "+num1[ge]; 33 } 34 }else if(shi==0){ 35 36 result=result+num1[ge]; 37 } 38 else{ 39 result=result+num2[da%100-10]; 40 } 41 return result; 42 } 43 private static String defineOut(int da) { 44 if (0<=da&&da<1000) { 45 return defineOut3(da); 46 } 47 else if (1000<=da&&da<1000000) { 48 49 return defineOut6(da); 50 } 51 else if (1000000<=da&&da<1000000000) { 52 return defineOut9(da); 53 } 54 return "error"; 55 } 56 //将百亿化作百万与千以内的数进行处理 57 private static String defineOut9(int da) { 58 int num1=da/1000000; 59 int num2=da%1000000; 60 return defineOut3(num1)+" million "+defineOut6(num2); 61 } 62 //将百万化作两个千以内的数处理 63 private static String defineOut6(int da) { 64 int num1=da/1000; 65 int num2=da%1000; 66 return defineOut3(num1)+" thousand "+defineOut3(num2); 67 } 68 }
题目描述
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
示例1:
输入
ABCDEF
A
输出
1
1 import java.util.*; 2 public class Main { 3 public static void main(String[] args) { 4 5 Scanner sc=new Scanner(System.in); 6 String line =sc.nextLine(); 7 String s=sc.nextLine().toUpperCase(); 8 int count=0; 9 char da=s.charAt(0); 10 char[] data=line.toUpperCase().toCharArray();//若使用getBytes()data[i]l里面放的则是该字符对应的数字 11 for (int i = 0; i < data.length; i++) { 12 13 if (data[i]==da) { 14 count++; 15 } 16 } 17 System.out.println(count); 18 19 20 } 21 22 }
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。
Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。
输入描述:
输入多行,先输入随机整数的个数,再输入相应个数的整数
输出描述:
返回多行,处理后的结果
输入:
11 10 20 40 32 67 40 20 89 300 400 15
输出
10 15 20 32 40 67 89 300 400
1 import java.util.*; 2 public class Main { 3 public static void main(String[] args) 4 { 5 Scanner sc=new Scanner(System.in); 6 while(sc.hasNext()){ 7 int count=sc.nextInt(); 8 int[] da=new int[count]; 9 HashSet<Integer> s=new HashSet<>(); 10 for (int i = 0; i < count; i++) { 11 da[i]=sc.nextInt(); 12 } 13 Arrays.sort(da); 14 for (int i = 0; i < da.length; i++) { 15 s.add(da[i]); 16 } 17 Iterator<Integer> i=s.iterator(); 18 ArrayList<Integer> t=new ArrayList<>(); 19 while (i.hasNext()) { 20 t.add(i.next()); 21 22 } 23 Collections.sort(t); 24 for (int j = 0; j < t.size(); j++) { 25 System.out.println(t.get(j)); 26 } 27 } 28 sc.close(); 29 30 } 31 32 } 33 34
题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入
0xA
输出
10
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()) { String a=sc.nextLine(); String data=a.substring(2, a.length()); char[] da=data.toCharArray(); int len=a.length(); int sum=0; for (int j = 0; j < da.length; j++) { sum=(int) (sum+toTen(da[j])*Math.pow(16, da.length-j-1)); } System.out.println(sum); } sc.close(); } public static int toTen(char s) { switch (s) { case 'A':return 10; case 'B':return 11; case 'C':return 12; case 'D':return 13; case 'E':return 14; case 'F':return 15; case '1':return 1; case '2':return 2; case '3':return 3; case '4':return 4; case '5':return 5; case '6':return 6; case '7':return 7; case '8':return 8; case '9':return 9; case '0':return 0; default: return -1; } } }
题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
输入
180
输出
2 2 3 3 5
package uestc; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()) { long a=sc.nextLong(); if (a<2) { return; } System.out.println(getResult(a)); } sc.close(); } public static String getResult(long s) { StringBuilder sb=new StringBuilder(); for (int i = 2; i <= s; i++) { while(s%i==0) { sb.append(i).append(" "); s=s/i; } } return sb.toString(); } }
题目描述
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
输入:
合法坐标为A(或者D或者W或者S) + 数字(两位以内)
坐标之间以;分隔。
非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。
下面是一个简单的例子 如:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
处理过程:
起点(0,0)
+ A10 = (-10,0)
+ S20 = (-10,-20)
+ W10 = (-10,-10)
+ D30 = (20,-10)
+ x = 无效
+ A1A = 无效
+ B10A11 = 无效
+ 一个空 不影响
+ A10 = (10,-10)
结果 (10, -10)
输入描述:
一行字符串
输出描述:
最终坐标,以,分隔
示例1
输入:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出:
10,-10
1 import java.util.ArrayList; 2 import java.util.Scanner; 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 7 public class Main { 8 public static void main(String[] args) 9 { 10 Scanner sc=new Scanner(System.in); 11 while (sc.hasNext()) { 12 String a=sc.nextLine(); 13 Point point=new Point(0,0); 14 String[] data=a.split(";"); 15 ArrayList<String> subDatasets=new ArrayList<>(); 16 for (int i = 0; i < data.length; i++) { 17 if (data[i].length()>3||data[i].length()<=1) { 18 continue; 19 }else { 20 String regex="(A|S|W|D)\d{1,2}$"; 21 Pattern pattern=Pattern.compile(regex,Pattern.MULTILINE); 22 Matcher matcher=pattern.matcher(data[i]); 23 while(matcher.find()) 24 { 25 subDatasets.add(matcher.group()); 26 }; 27 } 28 29 } 30 for (int i = 0; i < subDatasets.size(); i++) { 31 32 point=calculate(subDatasets.get(i),point); 33 34 } 35 System.out.println(point.x+","+point.y); 36 subDatasets.clear(); 37 38 39 } 40 sc.close(); 41 } 42 43 private static Point calculate(String string,Point data) { 44 String s=string.substring(0, 1); 45 46 int da=Integer.parseInt(string.substring(1, string.length())); 47 switch (s) { 48 case "A":return new Point(data.x-da,data.y); 49 case "S":return new Point(data.x,data.y-da); 50 case "W":return new Point(data.x,data.y+da); 51 case "D":return new Point(data.x+da,data.y); 52 default: 53 break; 54 } 55 return data; 56 57 } 58 static class Point 59 { 60 private int x; 61 private int y; 62 63 public Point(int x,int y) { 64 this.x=x; 65 this.y=y; 66 } 67 } 68 } 69