java–ACMer入门指南

java–ACMer入门指南

java--ACMer入门指南

 感觉,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);
		}
	}

}

java--ACMer入门指南

 这题又升华了一下。

注意在前期水题里好多要求是要精确到第几位的,这时候就排的上用场了,要引入一个类似于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]);	
	}
}

运行如下图所示:

java--ACMer入门指南

 

就成功了,以一道水题为例:

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账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号