Java计算器

时间:2015-09-22 23:00:07

标签: java calculator javac

我想取一个用户输入的数字并将其乘以我设置的几个不同的数字,但我无法弄清楚如何声明一个整数并让它与用户输入的任何数字很好地匹配。我试过写

System.out.println("If you take" + stepsOne * firstNum + "steps in a 10 second interval, you could potentially achieve..."); 

几乎我能想到的每一个变化,但我不断收到错误信息。显然javac出于某种原因讨厌我。 :/

此外,每当问候显示时,用户输入的数据和我的system.out.println之间就没有空格,所以如果他们输入名称“George”,它就会显示为“HelloGeorge”。不像上面那么大的问题,但如果你知道如何解决它,那么就有了它。 :)

这是我的代码:

import java.util.Scanner;

public class Calculator
{

    public static void main(String[] args)  
    {   
        Scanner userInputScanner = new Scanner(System.in);

        int firstNum;
        firstNum = 6;   

        System.out.println ("Hello, my name is Bob. What is your name?");

        String userName = userInputScanner.nextLine();  

        System.out.println ("Hello," + userName +  ". How many steps do you take in a ten second interval?"); 

        String stepsOne = userInputScanner.nextLine();

        System.out.println("If you take" + stepsOne + "steps in a 10 second interval, you could potentially achieve..."); 

        System.out.println ("Number of steps per minute:");
        System.out.println ("Number of steps per hour:");
      }

}

4 个答案:

答案 0 :(得分:2)

string 123整数 123之间存在重要区别 - 第一个只是一个字符序列,没有数学意义。您需要解析字符串,这意味着您必须根据字符串的字符构造一个整数。这是一种内置的方法(尽管自己也很有意思):Integer.parseInt()

String stepsOneString = userInputScanner.nextLine();
int stepsOne = Integer.parseInt(stepsOneString);

现在,stepsOne是一个整数,您可以在其上执行数学运算。但是,Integer.parseInt()会抛出您需要处理的异常。在您的课程中,我猜测您希望使用Scanner的内置转换功能:

int stepsOne = userInputScanner.nextInt();

这将基本上为您执行上述两个步骤。

我强烈建议您阅读数据类型的主题,这将解释上述概念。

答案 1 :(得分:1)

一旦你有一个表示数字的字符串,你可以使用Integer.parseInt()从中获取一个整数。

String stringSteps = userInputScanner.nextLine();
int steps = Integer.parseInt(stringSteps);

这是一个改进间距的完整程序。

import java.util.Scanner;

public class Calculator {   
  public static void main(String[] args) {
    Scanner userInputScanner = new Scanner(System.in);

    System.out.println ("Hello, my name is Bob. What is your name?");

    String userName = userInputScanner.nextLine(); //Asks user name

    System.out.println("Hello, " + userName +
        ". How many steps do you take in a ten second interval?");

    String stringSteps = userInputScanner.nextLine();
    int steps = Integer.parseInt(stringSteps);

    System.out.println("If you take " + steps +
        " steps in a 10 second interval, you could potentially achieve...");

    System.out.println ("Number of steps per minute: " + (6 * steps));
    System.out.println ("Number of steps per hour: " + (60 * 6 * steps));
  }
}

答案 2 :(得分:1)

  

基本上,我只想取一个用户输入的数字并将其乘以我设置的几个不同的数字,但我无法弄清楚如何声明一个整数并让它与任何数字一起很好地发挥作用用户进入。我试过打字

第一个问题是stepsOneString,所以它无法用于执行算术运算(至少不是他们键入你的尝试)。因此,您需要将其转换为int

int stepsOneInt = Integer.parseInt(stepsOne);

nb:如果NumberFormatException无法转换为String值,则会抛出int,因此请注意

现在您可以使用它来执行其他算术任务

System.out.println("If you take " + (stepsOneInt * firstNum) + " steps in a 10 second interval, you could potentially achieve...");
  

此外,每当问候语显示在javac中时,用户输入的数据与我的system.out.println之间没有空格,所以如果他们输入名称" George"它出现在" HelloGeorge"。不像上面那么大的问题,但如果你知道如何解决它,那么就有了它。 :)

那是因为在打印值之前你没有添加任何空格

System.out.println ("Hello, " + userName +  ". How many steps do you take in a ten second interval?"); 

答案 3 :(得分:0)

不确定理解你的问题......

您不能执行stepsOne * firstNum,因为stepsOne是一个String。 如果stepsOne必须是int,只需执行以下操作:

int stepsOne = userInputScanner.nextLine(); //Asks user a nb