所以问题很简单。
如果#include<stdio.h>
#include<math.h>
int main()
{
double xp,yp,xq,yq,a,b,c;
double t,xn,yn;
int z;
scanf("%d",&z);
scanf("%lf%lf",&xp,&yp);
scanf("%lf%lf%lf",&a,&b,&c);
scanf("%lf%lf",&xq,&yq);
t=asin(b/c);
if(z==0)
{
xn=xp*cos(t)-yp*sin(t)-xq*cos(t)+yq*sin(t)+xq;
yn=xp*sin(t)+yp*cos(t)-xq*sin(t)-yq*cos(t)+yq;
}
else
{
xn=xp*cos(t)+yp*sin(t)-xq*cos(t)-yq*sin(t)+xq;
yn=-xp*sin(t)+yp*cos(t)+xq*sin(t)-yq*cos(t)+yq;
}
printf("%0.lf %0.lf",xn,yn);
return 0;
}
的第一个数字是int
;
说我有:
0
现在我需要一个if语句,对int y = 0123;
int n = 123;
返回true,对y
返回false。
答案 0 :(得分:5)
你的问题很奇怪,原因之一是:一个int值不能以0开始。但是如果你将值存储在String中,你可以像这样轻松地检查它:
public static void main(String[] args) {
String y = "0123";
String n = "123";
System.out.println(startByZero(y));
System.out.println(startByZero(n));
}
public static boolean startByZero(String value) {
return value.startsWith("0");
}
输出:
true
false
修改强> 像Oleksandr建议的那样,你也可以使用:
public static boolean startByZero(String value) {
return value.charAt(0) == '0';
}
此解决方案比第一种解决方案更有效。 (但我个人认为它的可读性也较差)
答案 1 :(得分:3)
你的
y = 0123
将被视为八进制基础,但
n = 123
是十进制基数。
现在你做的时候
if (y == n )
将始终根据小数基数对数字进行比较。
根据您的要求,您必须从八进制到十进制进行转换,反之亦然。
您也可以使用Strings
作为@Valentin推荐。
答案 2 :(得分:2)
这似乎不是主题,而是基于OP的评论:
我需要这个的原因是因为我正在使用自制日期。如果我有约会时间03.04.2018&#39;我想打印它为3. 4. 2018,开头没有0 Lommmp
如果您不想重新发明轮子,则应使用java time API来解析和格式化日期:
LocalDate date = LocalDate.parse("03.04.2018", DateTimeFormatter.ofPattern("MM.dd.yyyy"));
System.out.println(date.format(DateTimeFormatter.ofPattern("M.d.yyyy")));
2018年3月4日
答案 3 :(得分:-1)
的String.format(&#34;%01D&#34;,数);
对于长度为1的零填充。
像0123
请阅读:https://www.geeksforgeeks.org/java-string-format-examples/