感觉,c++,竞争压力有点大。搞java的话,竞争压力会小不少,那就拿这道题来入个门吧。。
首先,要知道,在oj平台上运行,主函数所在的类,类名一定要为Main才能编译。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
int x , y;
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
x = in.nextInt();
y = in.nextInt();
System.out.println(x+y);
}
}
}
这题又升华了一下。
注意在前期水题里好多要求是要精确到第几位的,这时候就排的上用场了,要引入一个类似于c++函数库的东西
import java.text.DecimalFormat;
然后后期设置小数点后保留位数
就这样。DecimalFormat df = new DecimalFormat(“0.00”);
import java.util.Scanner;
import java.text.DecimalFormat;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
double x1, x2, y1, y2, s;
x1 = in.nextDouble();
y1 = in.nextDouble();
x2 = in.nextDouble();
y2 = in.nextDouble();
s = Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(s));
}
}
}
其中这道题还用到了数学函数:
这里就扩展一下数学函数的使用吧:
在java.lang.Math类中的所有方法基本上都需要掌握的,
Math.E //自然常数e=2.7182818284590452354
Math.abs(12.3); //12.3 返回该值的绝对值
Math.abs(-12.3); //12.3
Math.copySign(1.23, -12.3); //-1.23,返回第一个参数的量值和第二个参数的符号
Math.copySign(-12.3, 1.23); //12.3
Math.signum(x); //如果x大于0则返回1.0,小于0则返回-1.0,等于0则返回0
Math.signum(12.3); //1.0
Math.signum(-12.3); //-1.0
Math.signum(0); //0.0
//指数
Math.exp(x); //e的x次幂
Math.expm1(x); //e的x次幂 - 1
Math.scalb(x, y); //x*(2的y次幂)
Math.scalb(12.3, 3); //12.3*2³
//取整
Math.ceil(12.3); //返回最近的且大于该值的整数13.0
Math.ceil(-12.3); //-12.0
Math.floor(12.3); //返回最近的且小于该值的整数12.0
Math.floor(-12.3); //-13.0
//x和y平方和的二次方根
Math.hypot(x, y); //√(x²+y²)
//返回该值的二次方根
Math.sqrt(x); //√(x) x的二次方根
Math.sqrt(9); //3.0
Math.sqrt(16); //4.0
//返回该值的立方根
Math.cbrt(27.0); //3
Math.cbrt(-125.0); //-5
//对数函数
Math.log(e); //1 以e为底的对数
Math.log10(100); //10 以10为底的对数
Math.log1p(x); //Ln(x+ 1)
//返回较大值和较小值
Math.max(x, y); //返回x、y中较大的那个数
Math.min(x, y); //返回x、y中较小的那个数
//返回x的y次幂
Math.pow(x, y);
Math.pow(2, 3); //即2³ 即返回:8
//随机返回[0,1)之间的无符号double值
Math.random();
//返回最接近该值的整数,如果居中,则取偶数
Math.rint(12.3); //12.0
Math.rint(-12.3); //-12.0
Math.rint(78.9); //79.0
Math.rint(-78.9); //-79.0
Math.rint(34.5); //34.0
Math.rint(35.5); //36.0
Math.round(12.3); //与rint相似,返回值为long
//三角函数
Math.sin(α); //sin(α)的值
Math.cos(α); //cos(α)的值
Math.tan(α); //tan(α)的值
//求角
Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z)
Math.acos(y/z); //返回角度值[0~π] arc cos(y/z)
Math.atan(y/x); //返回角度值[-π/2,π/2]
Math.atan2(y-y0, x-x0); //同上,返回经过点(x,y)与原点的的直线和经过点(x0,y0)与原点的直线之间所成的夹角
Math.sinh(x); //双曲正弦函数sinh(x)=(exp(x) - exp(-x)) / 2.0;
Math.cosh(x); //双曲余弦函数cosh(x)=(exp(x) + exp(-x)) / 2.0;
Math.tanh(x); //tanh(x) = sinh(x) / cosh(x);
//角度弧度互换
Math.toDegrees(angrad); //角度转换成弧度,返回:angrad * 180d / PI
Math.toRadians(angdeg); //弧度转换成角度,返回:angdeg / 180d * PI
再就是字符串和数组了:
首先,你必须知道你个函数——toCharArray()
toCharArray( )的用法,将字符串对象中的字符转换为一个字符数组。
简答直白的解释就是:
字符串转换成字符数组后,每个字符的ASCLL码与字符T的ASCLL码进行二进制异或运算。最后把结果转换回字符。
见代码如下:
import java.util.Scanner;
public class Text{
public static void main(String[] args){
String baba = "我是一只快乐的小狗,啊, 好快乐";
char[] mychar = baba.toCharArray();
for(int i = 0;i < mychar.length;i++)
System.out.println(mychar[i]);
}
}
运行如下图所示:
就成功了,以一道水题为例:
ASCLL码排序:
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
Output
对于每组输入数据,输出一行,字符中间用一个空格分开。
Sample Input
qwe asd zxc
Sample Output
e q w a d s c x z
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){//没有特别标明的就用hasNext();
String ss = in.next();//字符串可以这样输入;
char[] sd = ss.toCharArray();
char minChar = (char)Math.min(sd[0],Math.min(sd[1], sd[2]));
char maxChar = (char)Math.max(sd[0],Math.max(sd[1],sd[2]));
char midChar = (char)(sd[0] + sd[1] + sd[2] - minChar - maxChar);
System.out.println(minChar+" "+midChar+" "+maxChar);
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114818.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...