java用scanner给string赋值问题

代码如下importjava.util.Scanner;publicclasstest{publicstaticvoidmain(String[]args){intx=1... 代码如下
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删掉,把这个作为第一个赋值的对象,就不会跳了
展开
 我来答
huyi0329
2013-10-13 · TA获得超过176个赞
知道答主
回答量:85
采纳率:0%
帮助的人:47.3万
展开全部

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);
    }
}


飞帆sunshine
推荐于2018-03-23 · TA获得超过140个赞
知道答主
回答量:280
采纳率:0%
帮助的人:105万
展开全部
nextInt() 接收一个整型字符,nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
串值的一部分

加入如下代码
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上复制的 懒得码字了。。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌微月2S
2013-10-13 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2848万
展开全部
String y = input.next();/

改成这样就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式