java判断数的符号 输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。

import java.util.Scanner;
public class Test30004{
public static void main(String[] args){
int ri, repeat;
int x, y=0;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
x=in.nextInt();
/*------------------*/
if (x>0)
y=1;
else if (x==0)
y=0;
else if (x<0)
y=-1;
System.out.println(y);
}
}
}
为什么Y一定要赋值为0,否则程序报错。

对于java的变量,我们知道有成员变量和局部变量。
关于他们的初始化,基本上所有书上都会写。成员变量,java会帮助你初始化,局部变量,则需要程序员自己初始化。
局部变量声明以后,Java 虚拟机不会自动的为它初始化为默认值。因此对于局部变量,必须先经过显示的初始化,才能使用它。
如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。

因为你的代码中for循环代码是不一定能够进入的。当你的repeat小于ri时,这时y就没有初始化了。所以你的y必须要先进行初始化
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-13

因为你的if ...else if....else if   这样写的话,y的赋值语句全部都在判断语句中,y可能会不被赋值,虽然你的三个判断包含了所有情况.建议下边这样写.

if (x>0)
           y=1;
          else if (x==0)
           y=0;
          else
           y=-1;

如果这样写就没有问题了.

第2个回答  推荐于2017-10-10

变量一定要初始化才能使用的,如果你y不初始化。

虽然看似你在x的全值域范围内都对y赋值了,但是编译器却不能识别x的值域,编译器只识别条件分支,明显,你y没有在所有路径中都初始化,如果你改为以下代码,y将不用再初始化。

if(x == 0)
{
  y=0;
} else if (x > 0)
{
  y=1;
} else
{
  y=-1;
}

本回答被提问者采纳
第3个回答  2014-08-13
因为你上面 写的 全是 if 或 elseif 所以 有可能 这些条件都不满足 那么
都不满足时 y 就不会被 赋值 但是你最后还要 输出 y 所以会报错
第4个回答  2014-08-13
是编译出的错? 如是 那就是因为 System.out.println(y); 这句 (因编译不能自动判断出上面它一定被复制吧)

java判断数的符号 输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1...
因为你的代码中for循环代码是不一定能够进入的。当你的repeat小于ri时,这时y就没有初始化了。所以你的y必须要先进行初始化

用switch编程实现 y=1 (X>0) y=0 (x=0) y= -1 (x<0)
可以这么实现int y = 0;int x = 10;int z = (new Integer(x)).compareTo(0);switch(z) { case 1: y = 1; break; case 0: y = 0; break; case -1: y = -1; break; default: System.out.println("error");} ...

if条件判断是否为整数
java中用if判断用户输入的是否是一个整形1、数Stringvalue=-2342333\/\/举例用Double解析判断是否为数字,如果抛出异常退出,正确接着解析是否为整数.value.indexOf(.)-1表示为小数\/*哪怕像00这样的数同样是小数*\/,==-1表示为整数。2、System.out.println(您输入的是:+userString+共+userString.leng...

在JAVA中怎么判断输入的是字符标点符号和数字
public static void main(String[] args){ \/\/target是从文本框传来的数据。这里进行模拟 String target = "22221";\/\/如果为true,则是数字,否则不是。System.out.println(isNumeric(target));} \/ 正则表达式:判断是否数字 param str return \/ public static boolean isNumeric(String str){ Patte...

java判断输入的一个字符 是字母 还是数字 或者是空格
import java.util.regex.Pattern;\/ 判断输入的一个字符 是字母 还是数字 或者是空格 author 小伟兄 \/ public class Test3 { public static void main(String[] args) { String str = "a";\/\/要判断的字符 if(isNumeric(str)){ System.out.println("是数字");}else if(isString(str)){ Sys...

JAVA输入的问题,编译后这句a=Integer.parseInt(args[0])有错,提示找...
你没有定义args数组变量,而应该是arg

java中x,y不同时等于0的关系表达试
x^2+y^2!=0 x y 不同时为零的正规关系表达式!

java 怎么判断字符串中是否含有一个符号
1、首先在打开的java程序中,需要引入hutool的jar包,如下图所示。2、然后创建一个Sting类型的字符串数字,如下图所示。3、接着在下方创建多个字符串指定查询,如下图所示。4、boolean contains = StrUtil.containsAny(phone,s1);\/\/字符串中是否包含任意一个。5、最后运行程序查看得到的结果,如下图...

java什么叫“三目条件运算符”?
三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。定义:对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则...

java运算符有哪些。求解一定要全 还有中文标注,谢谢了。
Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列...

相似回答