#java
#java
Вопрос:
новичок в Java здесь. Мой профессор вернул мой файл с этим комментарием «3) Программа неправильно реализует новый цикл. Целью цикла было позволить пользователю вводить свои четыре числа и производить вычисления. Затем программа должна спросить пользователя, хочет ли он продолжить, если они это сделают, программа должна разрешить ввод еще четырех чисел. Это должно продолжаться до тех пор, пока пользователь конкретно не скажет «нет», они хотят остановиться «.
Я не понимаю, как спросить пользователя, хочет ли он продолжить, а затем снова разрешить повторный ввод еще четырех чисел.
У меня также возникают проблемы с вводом правильного сообщения об ошибке.
import java.util.Scanner;
public class Loops {
public static void main(String[] args) {
// 1. Declare two integer variables and two double variables
int iNumber;
int iNumber2;
double iDecimal;
double iDecimal2;
int count;
char yesNo = 'y'; // When a char variable is declared, the value needs to be a char not a string. Therefore, it needs a single quote instead of a double quote.
// 2. Instantiate a Scanner object
Scanner input = new Scanner(System.in);
// 3. Place the entry of the number into a loop that requires the user to enter the values at least one time.
//int i = 1;
// NOTE – Steps 4 through 8 are EXACTLY the same as the CE-Decision exercise. You may reuse that code if you would like.
// 4. Using print, display two lines that allows the user to enter in the two integer values on the same line as the prompt.
System.out.print("Input integer value 1: ");
iNumber = input.nextInt();
System.out.print("Input integer value 2: ");
iNumber2 = input.nextInt();
// 5. Using print, display two lines that allows the user to enter in the two double values on the same line as the prompt.
System.out.print("Input double value 1: ");
iDecimal = input.nextDouble();
System.out.print("Input double value 2: ");
iDecimal2 = input.nextDouble();
// 6. Using multiple printf statements, display the result of adding, subtracting, multiplying, dividing and moding the two integer values.
if (iNumber > iNumber2)
{
System.out.println("nNumber 1 is greater than Number 2: ");
// instead of , for Printlns. , for printf. To add, use parenthesis.
System.out.println("nInput integer value 1: " iNumber);
System.out.println("Input integer value 2: " iNumber2);
System.out.println("Input double value 1: " iDecimal);
System.out.println("Input double value 2: " iDecimal2);
System.out.println("nInteger output: ");
System.out.printf("%s%d%s%d%s%d%n", "Adding ", iNumber, " and ", iNumber2, " = ", iNumber iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Subtracting ", iNumber, " and ", iNumber2, " = ", iNumber - iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Multiplying ", iNumber, " and ", iNumber2, " = ", iNumber * iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Dividing ", iNumber, " and ", iNumber2, " = ", iNumber / iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Moding ", iNumber, " and ", iNumber2, " = ", iNumber % iNumber2);
System.out.println("nDouble output: ");
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Adding ", iDecimal, " and ", iDecimal2, " = ", iDecimal iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Subtracting ", iDecimal, " and ", iDecimal2, " = ", iDecimal - iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Multiplying ", iDecimal, " and ", iDecimal2, " = ", iDecimal * iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Dividing ", iDecimal, " and ", iDecimal2, " = ", iDecimal / iDecimal2);
}
else if (iNumber < iNumber2)
{
System.out.println("nNumber 2 is greater than Number 1:");
// instead of , for Printlns. , for printf. To add, use parenthesis.
System.out.println("nInput integer value 1: " iNumber);
System.out.println("Input integer value 2: " iNumber2);
System.out.println("Input double value 1: " iDecimal);
System.out.println("Input double value 2: " iDecimal2);
System.out.println("nInteger output: ");
System.out.printf("%s%d%s%d%s%d%n", "Adding ", iNumber, " and ", iNumber2, " = ", iNumber iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Subtracting ", iNumber, " and ", iNumber2, " = ", iNumber - iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Multiplying ", iNumber, " and ", iNumber2, " = ", iNumber * iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Division ", iNumber, " and ", iNumber2, " = ", iNumber / iNumber2);
System.out.printf("%s%d%s%d%s%d%nn", "Moding ", iNumber, " and ", iNumber2, " = ", iNumber % iNumber2);
System.out.println("Double output: ");
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Adding ", iDecimal, " and ", iDecimal2, " = ", iDecimal iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Subtracting ", iDecimal, " and ", iDecimal2, " = ", iDecimal - iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Multiplying ", iDecimal, " and ", iDecimal2, " = ", iDecimal * iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Dividing ", iDecimal, " and ", iDecimal2, " = ", iDecimal / iDecimal2);
}
else if (iNumber2 == iNumber)
{
System.out.println("nBoth numbers are equal");
// instead of , for Printlns. , for printf. To add, use parenthesis.
System.out.println("nInput integer value 1: " iNumber);
System.out.println("Input integer value 2: " iNumber2);
System.out.println("Input double value 1: " iDecimal);
System.out.println("Input double value 2: " iDecimal2);
System.out.println("nInteger output: ");
System.out.printf("%s%d%s%d%s%d%n", "Adding ", iNumber, " and ", iNumber2, " = ", iNumber iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Subtracting ", iNumber2, " and ", iNumber, " = ", iNumber2 - iNumber);
System.out.printf("%s%d%s%d%s%d%n", "Multiplying ", iNumber, " and ", iNumber2, " = ", iNumber * iNumber2);
System.out.printf("%s%d%s%d%s%d%n", "Division ", iNumber, " and ", iNumber2, " = ", iNumber / iNumber2);
System.out.printf("%s%d%s%d%s%d%nn", "Moding ", iNumber, " and ", iNumber2, " = ", iNumber % iNumber2);
System.out.println("Double output: ");
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Adding ", iDecimal, " and ", iDecimal2, " = ", iDecimal iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Subtracting ", iDecimal2, " and ", iDecimal, " = ", iDecimal2 - iDecimal);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Multiplying ", iDecimal, " and ", iDecimal2, " = ", iDecimal * iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Dividing ", iDecimal, " and ", iDecimal2, " = ", iDecimal / iDecimal2);
}
else if (iNumber2 == 0)
{
System.out.println("nNumber 2 equals 0:");
// instead of , for Printlns. , for printf. To add, use parenthesis.
System.out.println("nInput integer value 1: " iNumber);
System.out.println("Input integer value 2: " iNumber2);
System.out.println("Input double value 1: " iDecimal);
System.out.println("Input double value 2: " iDecimal2);
System.out.println("nInteger output: ");
System.out.printf("%s%d%s%d%s%d%n", "Adding ", iNumber, " and ", iNumber2, " = ", iNumber iNumber2);
System.out.printf("%s%d%s%d%n", "Subtracting ", iNumber, " = ", iNumber - iNumber2);
System.out.printf("%s%d%s%d%n", "Multiplying ", iNumber, " = ", iNumber * iNumber2);
if (iNumber2 == 0 || iDecimal2 == 0){
System.out.println("Error: You cannot divide and mod by zero!!!");
}
else {
System.out.printf("%s%d%s%d%s%d%n", "Division ", iNumber, " and ", iNumber2, " = ", iNumber / iNumber2);
System.out.printf("%s%d%s%d%s%d%nn", "Moding ", iNumber, " and ", iNumber2, " = ", iNumber % iNumber2);
}
System.out.println("Double output: ");
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Adding ", iDecimal, " and ", iDecimal2, " = ", iDecimal iDecimal2);
System.out.printf("%s%.2f%s%.2f%n", "Subtracting ", iDecimal, " = ", iDecimal - iDecimal2);
System.out.printf("%s%.2f%s%.2f%n", "Squaring ", iDecimal, " = ", iDecimal * iDecimal2);
System.out.printf("%s%.2f%s%.2f%s%.2f%n", "Dividing ", iDecimal, " and ", iDecimal2, " = ", iDecimal / iDecimal2);
}
// a. Test the two numbers, subtract the smaller number from the larger number. Display the output with the numbers in the proper order. If the numbers are equal, display a message that subtracting a number from itself gives you zero.
// b. If the two numbers are equal, the program should display the message as “Squaring” a number instead of multiplying two numbers.
// c. If the second number is zero, the program should display an error message saying that you cannot divide or mod by zero.
// 7. Using multiple printf statements, display the result of adding, subtracting, multiplying, and dividing the two double values.
// a. Test the two numbers, subtract the smaller number from the larger number. Display the output with the numbers in the proper order. If the numbers are equal, display a message that subtracting a number from itself gives you zero.
// b. If the two numbers are equal, the program should display the message as “Squaring” a number instead of multiplying two numbers.
// c. If the second number is zero, the program should display an error message saying that you cannot divide by zero.
// 8. Make sure that there is a title before each of the two outputs and there are blank lines between the input section and the two output sections.
// 9. Ask the user if they wish to enter in another set of numbers.
count = input.nextInt();
do {
System.out.println("Do you wish to enter another set of numbers?: (y/n)");
yesNo = input.next().charAt(0);
// a. The only valid entries are : y, Y, n or N (single letters)
if (yesNo != 'Y' amp;amp; yesNo != 'y' amp;amp; yesNo != 'N' amp;amp; yesNo != 'n') {
System.out.println("Error = you must enter Y or N. Please retry. "); // Error message should be inside the if statement block or else the error message would always appear.
}
} while (yesNo != 'Y' amp;amp; yesNo != 'y' amp;amp; yesNo != 'N' amp;amp; yesNo != 'n');
}
}
System.out.print("Do you wish to enter another set of numbers?: (y/n)");
String answer = scan.nextLine();
// b. Use the Java construct input.next().charAt(0) to get the character value
// c. Place the input into a loop that tests the entry for validity
// i. If the entry is valid, end the loop
// ii. If the entry is invalid, display an error message and ask the user to reenter their response
// 10. If the user indicated that they wish to enter new values, continue the loop and allow the user to reenter a new set of values.
// a. The user should be allowed to reenter values as many times as they like. Only the entry of ‘n’ or ‘N’ should cause the loop to end.
// 11. If the user indicated that they do not wish to enter any more values, end the loop and display a thank you/goodbye message.
// 12. Comment your code.
// 3) Программа неправильно реализует новый цикл. Целью цикла было позволить пользователю вводить свои четыре числа и производить вычисления.
// Затем программа должна спросить пользователя, хочет ли он продолжить, если они это сделают, программа должна разрешить ввод еще четырех чисел.
// Должно продолжаться до тех пор, пока пользователь конкретно не скажет «нет», что он хочет остановиться.
введите описание изображения здесьвведите описание изображения здесь
Комментарии:
1. Ваш код — это один огромный метод. Я думаю, вам нужно лучше продумать дизайн вашего кода, например, используя дизайн сверху вниз, чтобы разбить ваш код на более мелкие сегменты, которые легче понять и отладить.
Ответ №1:
Этот вопрос едва читаем. Вам следует попробовать писать более четкие вопросы, чтобы больше людей смогли вам помочь. Укажите короткую часть кода, в которой заключается проблема, и спросите «почему это неверно?».
Что касается вашего вопроса, я думаю, у вас должен быть другой цикл while, который будет включать логику, которую вы реализовали. Что-то вроде while(yesNo == 'Y' || yesNo == 'y')
. Таким образом, пока это верно, вы считываете 4 входных данных от пользователя. Мне кажется, что вам даже все равно, ввел ли пользователь ‘n’ или ‘y’, ваш цикл do-while просто проверяет правильность ввода.
Комментарии:
1. Здравствуйте, я совершенно новичок в Java, поэтому мне трудно правильно задавать вопросы об этом. Я понятия не имею, в чем проблема. У нас была пара снежных дней, поэтому профессору пришлось ускорить занятия. Спасибо, что нашли время, чтобы облегчить мне понимание.