比较用户输入和整数

时间:2018-02-10 17:26:16

标签: java

我制作的程序会向用户询问一个简单的数学问题,并且必须告诉他们这些问题是正确还是不正确。我收到错误

package exercises;

import java.util.Scanner;
public class Exercises {


    public static void main(String[] args) {
        Scanner user_input = new Scanner (System.in);
        String number;
        System.out.println("Consider the following equation: 5x - 10");
        System.out.println("Solve for x.")
        number = user_input.next();

        if (number == 2);{
            System.out.println("Correct.");

        }else{
            System.out.println("Incorrect. The answer is 2.");
        }

}

3 个答案:

答案 0 :(得分:0)

您的代码有两个主要问题,一个是未成年人。

if

中的分号

第一个是if语句后面的分号。分号结束if语句,它是没有花括号的if语句的缩写,如:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_song);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    LocalBroadcastManager.getInstance(this).registerReceiver(updateReceiver, new IntentFilter(Constants.ACTION.PLAY_INFO));

    storage = new Storage(this);
    playinfo = (CardView) findViewById(R.id.playinfo);
    prev = (ImageView) findViewById(R.id.prev);
    playpause = (ImageView) findViewById(R.id.playpause);
    fwd = (ImageView) findViewById(R.id.fwd);

    title = (TextView) findViewById(R.id.title);
    artist = (TextView) findViewById(R.id.artist);

    playinfo.setOnClickListener(this);
    prev.setOnClickListener(this);
    playpause.setOnClickListener(this);
    fwd.setOnClickListener(this);

    layoutManager = new LinearLayoutManager(this);
    recycler = (RecyclerView) findViewById(R.id.recycler);
    recycler.setItemAnimator(new DefaultItemAnimator());
    recycler.setLayoutManager(layoutManager);
    empty = (TextView) findViewById(R.id.empty);

    rvAdapter.setOnItemClickListener(new RVAdapter.OnRvItemClickListener() {
        @Override
        public void onRvItemClickListener(ArrayList<String> data, int position) {
            storage.storeSongs(musics); //stores all musics of the current list in an Array, in case of next and prev
            Intent intent = new Intent(Constants.ACTION.PLAY_INFO);
            intent.putExtra("title", data.get(0));
            intent.putExtra("artist", data.get(1));
            intent.putExtra("playStatus", "play");
          LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);
            storage.storeAudioIndex(position);
            Intent intent2 = new Intent(getBaseContext(), MyMusicPlayerService.class);
            intent2.setAction(Constants.ACTION.STARTFOREGROUND_ACTION);
            startService(intent2);//play music

            updateBottom();
        }
    });

    rvAdapter.setOnOptionClickListener(new RVAdapter.OnOptionClickListener() {
        @Override
        public void onOptionClick(String mode, ArrayList<String> data) {
            processOption(mode, data);
        }
    });

    recycler.setAdapter(rvAdapter);
}

省略表达式并只写分号,表示有效的 NOP (无操作),所以

if (a > b) doMethod();

是有效的陈述,基本上什么都不做。

你可能打算

if (a > b) ;

比较

另一个问题是,您的if (number == 2) { System.out.println("Correct."); } else { System.out.println("Incorrect. The answer is 2."); } 变量是number,但您将其与String进行比较。这不起作用,结果将始终为int。您需要将false转换为String,反之亦然,以便进行比较。

请注意,使用intStringString进行比较并不像您预期​​的那样(请参阅How do I compare strings in Java?)了解详情,请改用==。< / p>

因此String#equals String的一种可能性是String

String number = user_input.next();

if (number.equals("2")) {

另一个是int int

String number = user_input.next();
int asValue = Integer.parseInt(number);

if (asValue == 2) {

或直接使用Scanner#nextInt

int number = user_input.nextInt();

if (number == 2) {

缺少分号

小问题是您在以下语句后忘记了分号

System.out.println("Solve for x.") // Semicolon needed

在Java中,每个表达式都必须以分号结尾,它是一种严格的语言。

答案 1 :(得分:0)

您有两个语法错误,两者都与分号;相关。

第一个错误是此行System.out.println("Solve for x.")。 在Java中,每个语句必须以;结尾。这一行必须是System.out.println("Solve for x.");

第二个错误出现在if语句中:if (number == 2);{。你应该在括号后删除分号。正确的代码行是if (number == 2) {

答案 2 :(得分:-3)

您正在尝试将library(tidyverse) DF1 %>% gather(Role, UserId, TakerId:GiverId) %>% mutate(Role = str_sub(Role, 1, 5)) %>% select(UserId, Role, Col1:Col3) # UserId Role Col1 Col2 Col3 #1 1 Taker 24 37 44 #2 4 Taker 28 31 48 #3 7 Taker 26 38 43 #4 10 Taker 20 35 45 #5 13 Taker 23 39 41 #6 3 Giver 24 37 44 #7 2 Giver 28 31 48 #8 11 Giver 26 38 43 #9 4 Giver 20 35 45 #10 10 Giver 23 39 41 (一个字符串)与一个整数进行比较而无法完成,此处您有两个选项

  

1)从number

读取一个整数
System.in
  

2)将public static void main(String[] args) { Scanner user_input = new Scanner(System.in); String number; System.out.println("Consider the following equation: 5x - 10"); System.out.println("Solve for x."); number = user_input.next(); if (Integer.parseInt(number) == 2) { System.out.println("Correct."); } else { System.out.println("Incorrect. The answer is 2."); } } 解析为整数,然后将其与int

进行比较
number