2 m0 37226772 m0_37226772 于 2017.01.13 13:48 提问

JAVA题目:从键盘内输入一个数,大于90就是A,60以上B,60一下C。我的不管输入多少都是C

package sds;

import java.util.Scanner;

public class Test {
static int Scanner ;

public static void main(String args[]) {
int a;
System.out.print("输入");
Scanner scan = new Scanner(System.in);
String read = scan.nextLine();
System.out.println("输入数据:"+read);

  a=Scanner;
if(a>=90){  
    System.out.println("A");  
}  
else if(a>=60){  
    System.out.println("B");  
}  
else{  
    System.out.println("C");  
}  

}

} (求大神改正)

12个回答

strongerzhi
strongerzhi   2017.01.13 14:13
已采纳

或者a = Scanner 改成 a = Integer.valueOf(read).intValue();

strongerzhi
strongerzhi   2017.01.13 14:11

同学,你的Scanner没有赋值呀,你赋值给了read,read的到的字符串转化成数字,赋给Scanner再判断

m0_37226772
m0_37226772 谢谢!
11 个月之前 回复
q995245021
q995245021   2017.01.13 14:13

int a;
System.out.println("input");
Scanner scan = new Scanner(System.in);
Integer read = scan.nextInt();
System.out.println("input:" + read);
a = read;
if(a >= 90){
System.out.println("A");
} else if (a >= 60){
System.out.println("B");
} else {
System.out.println("C");
}
a 赋值为你获取的值

m0_37226772
m0_37226772 谢谢了!
11 个月之前 回复
qq_30968755
qq_30968755   2017.01.13 14:18

键盘输入的值给了scan,然后传至read,而a=Scanner,不应该是a=read嘛?,a=Scanner表示scanner对应的值肯定大于90。同意楼上的观点

m0_37226772
m0_37226772 谢谢了
11 个月之前 回复
jdjdndhj
jdjdndhj   2017.01.13 14:25

a=Scanner; 你这一句是什么意思?
Scanner这个静态变量申明初始化后就没有再赋值了,你现在把一个只初始化的变量赋给a,
所以无论你输入什么a这个变量都是0(scanner的初始化值)。

你现在的写法是先获得String类型的值,那你就得把String转换成int型,可以使用Integer包装类

String read = scan.nextLine();
Scanner = Integer.valueOf(read);
a= Scanner;
==================

其实可以直接获取int型的数据一句到位
Scanner = scan.nextInt();

但是以上的写法你都要考虑一个问题就是无论用这两种方法的哪一种,如果输入的数据有非数字,运行起来会报错。
如果想做的完整一点还得判断是否为数字。
m0_37226772
m0_37226772 谢谢你,我是这两天才开始自学JAVA的,以后不懂还望多多指教
11 个月之前 回复
bluky_di
bluky_di   2017.01.13 14:30

你定义了一个整型变量a和一个整型静态变量Scanner ,然后他们默认的值都是0,你把静态变量Scaner赋值为a,那么a还是0,所以进入到if判断的时候,
就是C了。
不知道你为啥要这么写,而且获取Scanner键盘输入不用nextLine,不然关于数值计算,你可能要将String转化为int。

建议改为一下:
package sds;
import java.util.Scanner;
public class Test {
//static int Scanner ;
public static void main(String args[]) {//虽然没错,但是建议以后写数组的时候写成String[] args,你这种数组声明方式是c/c++的。
//int a;
System.out.print("输入");
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
//String read = scan.nextLine();
//System.out.println("输入数据:"+read);
//a=Scanner;
if(a>=90){

System.out.println("A");

}

else if(a>=60){ //这边如果你是想要60-90分的话,最好别这样写,因为你这样写,我输入的值大于60,会输出A B结果。
System.out.println("B");

}

else{

System.out.println("C");

}

}

}

m0_37226772
m0_37226772 谢谢大神!
11 个月之前 回复
A350204530
A350204530   2017.01.13 13:56

大于90就是A,60以上B,60一下C
if(a<=60){
System.out.println('C');
}else if(a>60&&<=90){
System.out.println('B');
}else{
System.out.println('A');
}
你试试

m0_37226772
m0_37226772 不行呢
11 个月之前 回复
bi_youwei
bi_youwei   2017.01.13 13:59

static int Scanner ; 把static去掉试试

m0_37226772
m0_37226772 把static去掉之后就不是静态值了不能赋值给a
11 个月之前 回复
u013693144
u013693144   2017.01.13 14:08

你自己打印的输入的值为read ,赋值的时候 a=Scanner?,
int read = scan.nextInt();
a =read;

m0_37226772
m0_37226772 谢谢!因为是自学所以还有很多漏洞
11 个月之前 回复
zcouy
zcouy   2017.01.13 14:25

将a=Scanner 改为:a=Integer.parseInt(read); 就行了

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!