java用scanner给string赋值问题
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int x = 1;
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个操作数: ");
int data1 = input.nextInt();
System.out.println("请输入运算符号: ");
String y = input.nextLine();//为什么把这句话跳了过去
if (y=="+" )
{x=1;}
if (y=="-" )
{x=2;}
if (y=="*" )
{x=3;}
if (y=="/" )
{x=4;}
System.out.print(x);
System.out.print("请输入第二个操作数:");
int data2 = input.nextInt();
int result = 0;
switch (x) {
case 1:
result = data1 + data2;
break;
case 2:
result = data1 - data2;
break;
case 3:
result = data1 * data2;
break;
case 4:
result = data1 / data2;
break;
}
System.out.println(data1 + " " + y + " " + data2 + " = " + result);
}
}
看代码注释有一句话会跳过去
”String y = input.nextLine();//为什么把这句话跳了过去“
有趣的事,我把第一个data1删掉,把这个作为第一个赋值的对象,就不会跳了 展开
1》”String y = input.nextLine();改为String y=input。next();
2》然后判断符号的语句里面y=="+"改为y.equals("+");
3》对于其他的什么/ * - 也按着上面的修改,那么你的程序可以正常的运行了。
4》附上修改后的代码。
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int x = 1;
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个操作数: ");
int data1 = input.nextInt();
System.out.println("请输入运算符号: ");
String y =input.next(); // 为什么把这句话跳了过去
if (y.equals("+")) {
x = 1;
}
if (y.equals("-")) {
x = 2;
}
if (y.equals("*")) {
x = 3;
}
if (y.equals("/")) {
x = 4;
}
System.out.print(x);
System.out.print("请输入第二个操作数:");
int data2 = input.nextInt();
int result = 0;
switch (x) {
case 1:
result = data1 + data2;
break;
case 2:
result = data1 - data2;
break;
case 3:
result = data1 * data2;
break;
case 4:
result = data1 / data2;
break;
}
System.out.println(data1 + " " + y + " " + data2 + " = " + result);
}
}
串值的一部分
加入如下代码
int n = ScannerObjext.nextInt()
String s1 = ScannerObjext.nextLine();
String s2 = ScannerObjext.nextLine();
假设输入:
42
and don't you
forget it
在这种情况下,n的值为42,s1设置为空白字符,s2设置为and don't you
因为nextInt()读入42,但并没有读入"\n",因此S1调用42所在行的剩余部分
结合不同的方法从键盘读取字符输入时,有时不得不包含一条额外的nextLine()调用,以去除行的结束符。
希望我的回答可以帮助你的理解
CSDN上复制的 懒得码字了。。。
改成这样就好了。