zoukankan      html  css  js  c++  java
  • 某华

    题目描述

    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型整数

    输出描述:

    输出相应的英文写法

    示例1

    输入

    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    输出处理后的随机整数

     注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

    输入描述:

    输入多行,先输入随机整数的个数,再输入相应个数的整数

    输出描述:

    返回多行,处理后的结果

    示例1

    输入:

    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  

    题目描述

    写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

    输入描述:

    输入一个十六进制的数值字符串。

    输出描述:

    输出该数值的十进制字符串。

    示例1

    输入

    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型整数

    输出描述:

    按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

    示例1
    
    

    输入

    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  
     
  • 相关阅读:
    splay
    开车旅行(2012day1T3)
    LCT入门
    最小瓶颈路
    poj 3041 Asteroids
    sql waitfor 延时执行
    [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝
    SQL Server中行列转换
    sql中 with rollup 、with cube、grouping 统计函数用法
    sql 分组后 组内排名
  • 原文地址:https://www.cnblogs.com/jinxingerhuo/p/9640829.html
Copyright © 2011-2022 走看看