Print the formula used to describe the addition of two numbers - java

I am stuck in the U of Helsinki Java MOOC:
Create a program that can be used to add two integers together. In the beginning, the user is asked to give two integers that are to be summed. The program then prints the formula that describes the addition of the numbers.
Example output:
Give the first number:
5
Give the second number:
4
5 + 4 = 9
I am trying to get the system to print " "first" + "second" is "result". For some reason I am stumped on this otherwise easy question. My code is always throwing an error. What am I doing wrong in the last line?
import java.util.Scanner;
public class AdditionFormula {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// write your program here
System.out.println("Give the first number: ");
int first = Integer.valueOf(scanner.nextLine());
System.out.println("Give the second number: ");
int second = Integer.valueOf(scanner.nextLine());
//System.out.println("first" " + " Integer.valueOf(first) + Integer.valueOf(second));
System.out.println(first + " + " + second " = " + (first + second));
}

The code you provided does not compile
Change to
System.out.println(first + " + " + second + " = " + (first + second));

Related

The insertion point is skipping a line

This is my first week of coding and I am unsure of why when I go to ask "Do you enjoy life", it forces me to type the answer on the next line.
import java.util.Scanner;
public class messing {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print("Enter Your Name: ");
String name = keyboardInput.nextLine();
System.out.print("How old are you: ");
int age = keyboardInput.nextInt();
System.out.println(name + " you are " + age + "?" + " Do you enjoy life: " );
String enjoy = keyboardInput.next();
System.out.print(enjoy + "?");
}
}
This is because the line of code that displays the question (line 13) uses the System.out.println() function, which, in addition to the text displayed, appends a newline character. This sends any further text onto the next line in the console. Replacing the function with the System.out.print() function removes this behavior.
That's because you're using System.out.println when asking the user if they enjoy life.
Simply change the function to System.out.print like the rest so you can input your answer in the same line.
System.out.print(name + " you are " + age + "?" + " Do you enjoy life: " );

Scanner bug in java [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 months ago.
Improve this question
I'm italian (the writings in the prints are in italian). After do the addition, the program ask me an input, and from this input (and another that it ask after) it made an subtraction. I don't know if this is a bug. Can somone help me?
import java.util.Scanner;
public class calcolatrice {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numero1;
int numero2;
int numero3;
System.out.println("Menu: "
+ "addition (1), "
+ "subtraction (2), "
+ "multiplication (3), "
+ "division (4), "
+ "exponential (5), "
+ "square root (6)");
System.out.println("\nEnter the number corresponding to the option you want: ");
int opzione = input.nextInt();
if (opzione == 1) {
System.out.print("Enter the first number: ");
numero1 = input.nextInt();
System.out.print("Enter the second number: ");
numero2 = input.nextInt();
numero3 = numero1 + numero2;
System.out.print("The sum between " + numero1 + " and " + numero2 + " is: " + numero3);
} else if (opzione == 2)
System.out.print("\nEnter the first number: ");
numero1 = input.nextInt();
System.out.print("Enter the second number: ");
numero2 = input.nextInt();
numero3 = numero1 - numero2;
System.out.print("The difference between " + numero1 + " and " + numero2 + " is: " + numero3);
}
}
In your original code, you have this logic:
if (opzione == 1) {
// do things
} else if (opzione == 2)
// do other things
That code has a subtle bug present: in the second branch of the if statement, there are no braces; that is, there is not {...}.
Here is the entire block, where I applied code formatting (indendation) as well as line numbers:
1 if (opzione == 1) {
2 System.out.print("Enter the first number: ");
3 numero1 = input.nextInt();
4
5 System.out.print("Enter the second number: ");
6 numero2 = input.nextInt();
7
8 numero3 = numero1 + numero2;
9 System.out.print("The sum between " + numero1 + " and " + numero2 + " is: " + numero3);
10
11 } else if (opzione == 2)
12 System.out.print("\nEnter the first number: ");
13
14 numero1 = input.nextInt();
15
16 System.out.print("Enter the second number: ");
17 numero2 = input.nextInt();
18
19 numero3 = numero1 - numero2;
20 System.out.print("The difference between " + numero1 + " and " + numero2 + " is: " + numero3);
A few comments:
Line 12: This is indented once, which corresponds to the if statement – that is, if opzione has a value of 2, it will then proceed to run line 12.
Line 14: This is not indented. Note that the code formatter did this automatically (I'm using IntelliJ, though there are many other options). The formatter understood that line 14 is not part of the if statement from line 11.
Lines 16-20: Just like with line 14, these are lines of that code that run independently of the if statements on line 1 or line 11. This is why you observed that it prompts you for additional things after choosing the "addition" path.
To fix your code:
Line 11: Add an open brace ({) at the end of the line, changing this:
} else if (opzione == 2)
to this:
} else if (opzione == 2) {
Line 21: Add a new line at the end (after the call to System.out.print), with a single closing brace (}) – this is the other end of { from Line 11

Why my indexOf value is not returning the right result?

I am writing this little section for a program I'm gonna write for initials of a name in java, and I need to determine the position of each space in it to be able to choose the initials. I'm testing it to make sure the spaces are been seen in the right position in the line, but for some reason, the position always comes wrong! Please help me.
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("please enter full name:");
String name = in.nextLine();
int space = name.indexOf(" ");
int space1 = name.indexOf(" ", space) + space+1;
int space2 = name.indexOf(" ", space1) + space1+1;
int space3 = name.indexOf(" ", space2) + space2+1;
int space4 = name.indexOf(" ", space3) + space3+1;
int space5 = name.indexOf(" ", space4) + space4+1;
System.out.println(space + " " + space1 + " " + space2 + " " + space3 + " " + space4);
}
}
My idea using this line was to count up to each part of the line space that shows up after the last one and add 1 because java starts counting at 0.
(" ", space1) + space1+1;
Basically, if the name is "Jeff Luiz Jeff Luiz" the first space is at 4 and the next one is at 9, so it would the 4, then proceed to count after this space, starting at 0, which would find 4 again(because Luiz has the same amount of letters), sum up with the last space number to keep track of the real position(then it would be 8), and finally sum up with 1 because of how java works, and so on. When I ran these 4 words I found the result 4 9 19 19 19. Does anyone know what is the problem with my code?
Replace
int space1 = name.indexOf(" ", space) + space+1;
with
int space1 = name.indexOf(" ", space + 1);
because String#indexOf(String str, int fromIndex) returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
Demo:
public class Main {
public static void main(String[] args) {
String name = "Arvind Kumar Avinash";
int space = name.indexOf(" ");
int space1 = name.indexOf(" ", space + 1);
System.out.println(space + ", " + space1);
}
}
Output:
6, 12

Java calculator not executing if-statement [duplicate]

This question already has answers here:
Using scanner.nextLine() [duplicate]
(5 answers)
Scanner issue when using nextLine after nextXXX [duplicate]
Closed 9 years ago.
I'm relatively new to programming and have recently started learning Java in order to move into Android programming. I thought I would create a very simple calculator to practice, but it seems that my if statement doesn't work.
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
//Create new scanner object
Scanner numInput = new Scanner( System.in );
//Enter first number
System.out.println("Please enter the first number: ");
int num1 = numInput.nextInt();
//Enter the second number
System.out.println("Please enter the second number: ");
int num2 = numInput.nextInt();
//Choose the operation to perform (+,-,*,/)
System.out.println("What operation would you like to do?");
System.out.println("Type \"+\" to add.");
System.out.println("Type \"-\" to subtract.");
System.out.println("Type \"*\" to multiply.");
System.out.println("Type \"/\" to divide.");
String opChoice = numInput.nextLine();
//Add
if (opChoice.equals("+")) {
int ans = num1 + num2;
System.out.println("Adding " + num2 + " to " + num1 + " equals " + ans + ".");
}
//Subtract
else if (opChoice.equals("-")) {
int ans = num1 - num2;
System.out.println("Subtracting " + num2 + " from " + num1 + " equals " + ans + ".");
}
//Multiply
else if (opChoice.equals("*")) {
int ans = num1 + num2;
System.out.println("Multiplying " + num2 + " with " + num1 + " equals " + ans + ".");
}
//Divide
else if (opChoice.equals("/")) {
int ans = num1 + num2;
System.out.println("Dividing " + num1 + " by " + num2 + " equals " + ans + ".");
}
}
}
I am using the Eclipse IDE, and it runs fine until it asks for which operation to do. It will display the options but won't let me enter anything (I've been testing it with multiplying 5 by 2).
I searched for similar questions and tried what they suggested, but it still doesn't seem to work. I would appreciate any help, I assume this is probably just some simple error I am making, so I apologize if this seems like a silly question!
EDIT: Thanks for the quick responses, guys! I appreciate it. And yes, I fixed the multiply and division. :)
The problem is that nextInt() doesn't consume (doesn't read) the new-line character (that you input when you press [Enter]). One way to solve this is calling nextLine() after each nextInt():
//Enter first number
System.out.println("Please enter the first number: ");
int num1 = numInput.nextInt();
numInput.nextLine(); // Add this
//Enter the second number
System.out.println("Please enter the second number: ");
int num2 = numInput.nextInt();
numInput.nextLine(); // Add this
Another way to solve this, would be reading the numbers with nextLine() (which returns a String) and then parsing it to a int:
int num1 = Integer.parseInt(numInput.nextLine());
You won't need to add an extra nextLine() because the new-line character is being consumed by the nextLine() already called.
Also, as #sotondolphin suggested, you may want to check your * and / operations.
The issue is that when numInput.nextInt(); is called, you get the number entered ... but it leaves the newline (\n). Your call to numInput.nextLine(); then gets an empty string.
Replacing that call with numInput.next() will solve the problem as it has a slightly different behavior:
public String next()
Finds and returns the next complete token from this scanner. A complete token is preceded and followed by input that matches the delimiter pattern.
The default delimiter pattern is whitespace, which includes \n and what's in the input stream after you enter the operation (using * as example) is now \n*\n
The code below does addition but not expected multiplication and division. Could you please check the source?
//Multiply
else if (opChoice.equals("*")) {
int ans = num1 + num2;
System.out.println("Multiplying " + num2 + " with " + num1 + " equals " + ans + ".");
}
//Divide
else if (opChoice.equals("/")) {
int ans = num1 + num2;
System.out.println("Dividing " + num1 + " by " + num2 + " equals " + ans + ".");
}
}

Trouble reading next int

(original question, already answered)
I want a program to read integers from a text file. The data file looks like this:
5 4
3 5
4 5
3 2
The first number of each row is the par, and the second number is the score. Because 5 - 4 = 1, the score is one under par (which is a birdie). My code for the first line:
in = new Scanner (dataFile);
System.out.println("Golf Scores: ");
String line1 = in.nextLine();
System.out.println("Score 1: " + line1);
int par1 = in.nextInt();
System.out.println("Par is: " + par1);
When I run it, I get this:
Golf Scores:
Score 1: 5 4
Par is: 3
So the par and score shows up correctly. However, the displayed par shows the par of the next line from the text file. I want it to show "5" again. I tried putting the in.nextInt before the in.nextLine, but when I tried that I got this
Golf Scores:
Score 1: 4
Par is: 5
Also please let me know if I need to add anything to explain my question better.
You can't "rewind" the scanner, once you've read the line, it's gone and you can't read from it again. You can try something like this:
int par = in.nextInt();
int score = in.nextInt();
System.out.println("Score: " + par + " " + score);
System.out.println("Par is:" + par);
Here, we're reading and storing the two integers separately to begin with, and displaying them just after.
You shouldn't care if it's an int (although it's always an int - in your case) so you don't have to bother using nextInt():
String line = in.nextLine();
String[] nums = line.split(" ");
System.out.println("score: " + nums[0]/*par*/ + " " + nums[1]/*score*/);
System.out.println("par is:" + nums[0]);
You could read the line the split it like so
String line1 = in.nextLine();
String[] parScore = line.split(" ");
System.out.println("Score 1: " + parScore[1]);
System.out.println("Par is: " + parScore[0]);

Categories