#java
#java
Вопрос:
Я пытаюсь решить проблему с аббатством кода, и я очень застрял. Моя цель для программы — принимать числа с помощью математической операции перед числом и выполнять эту математическую операцию, такую как:
5
3
* 7
10
* 2
* 3
1
% 11
answer:
1
Я чувствую, что я очень близок, но, похоже, не могу получить ответ, который я хочу также добавлять каждый раз.
import java.util.Scanner;
public class ModularCalculator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter Initial Number:");
int iN = in.nextInt();
int sum = 0;
for (int i = 0; i <= 1000000; i ) {
String a = in.next();
int b = in.nextInt();
if (a.equalsIgnoreCase(" ")) {
System.out.println(b iN);
} else if (a.equalsIgnoreCase("*")) {
System.out.println(b * iN);
} else {
System.out.println(b % iN);
sum = b iN;
}
}
}
}
Комментарии:
1. Что происходит, и что вы хотите, чтобы произошло?
2. Я тоже хочу либо добавить значения, либо умножить и продолжать делать это до тех пор, пока модуль не выполнит это над суммой
Ответ №1:
Ваша проблема в том, что вы не выполняете правильную алгебру. Запомните порядок операций. В вашем конкретном случае мы можем упростить его, чтобы использовать только те операции, которые у вас есть, а именно: Multiply, Modulo, Addition
. Технически, Modulo на самом деле не стандартизирован в том, где он упорядочен, но я думаю, что большинство языков имеют значение Modulo как такое же, как умножение / деление, поэтому лучше всего упорядочить его таким образом.
Поскольку это явно для домашнего задания, я не собираюсь исправлять ваш код за вас. Я скажу вам, что это определенно ваша проблема. Подумайте о том, как вы могли бы решить эту проблему…подсказка подсказка … не считывайте токен за раз … попробуйте прочитать больше…
Комментарии:
1. codeabbey.com/index/task_view/modular-calculator на самом деле нет, это не для домашней работы, это codeabey, и я просто пытаюсь стать лучше:(
2. Хорошо, это немного объясняет. Я никогда раньше не видел этот сайт, но на первый взгляд я бы держался подальше. Как я уже сказал, Modulo не имеет стандартного приоритета, поэтому, если Modulo имеет высокий приоритет, ответ должен быть 4, а если он имеет низкий приоритет, тогда это будет 6. Тот факт, что они говорят, что это
1
кажется мне красным флагом.
Ответ №2:
это не будет работать правильно! потому что вы работаете неправильно, например :
ответ на 1 2*3 равно 7, но ваша программа вернет 9 в качестве ответа
я думаю, вы должны узнать о postfix и prefix и о том, как использовать stack для достижения этой цели, вот ссылка для изучения :
Комментарии:
1. То же самое касается и вас: пожалуйста, удалите любой код из вашего ответа и объясните на простом английском языке. StackOverflow — это не то место, куда могут приходить студенты колледжей / старших классов и заставлять людей выполнять за них домашние задания.
2. @searchengine27 я не понимаю, почему вы отклонили мой ответ, вы могли бы отредактировать мой ответ… хорошо, я удалю код, я этого не знал !
3. Это не имеет никакого отношения к вашему code…in на самом деле, я ценю, что вы хотели помочь в решении вопроса, разместив код — я это делаю. Но в этом случае человек, задающий вопрос, пытается учиться, поэтому бросание в них стены кода им не поможет. В подобных случаях, на мой взгляд, лучше объяснить им это, а затем позволить им решить вопрос.
4. @searchengine27 вы правы, я должен просто объяснить идею и отправить ссылку
5. Спасибо за удаление кода, я удалил понижающий голос.
Ответ №3:
Проблема, с которой вы столкнулись, заключалась в том, что вы неправильно сохраняли значение из последнего вычисления. Все, что я сделал, это просто сохранил последнее вычисленное значение в «iN».
Scanner in = new Scanner(System.in);
System.out.println("Enter Initial Number:");
int iN = in.nextInt();
int sum = 0;
for (int i = 0; i <= 1000000; i ) {
String a = in.next();
int b = in.nextInt();
if (a.equalsIgnoreCase(" ")) {
iN = b iN;
} else if (a.equalsIgnoreCase("*")) {
iN = b * iN;
} else {
iN = b % iN;
sum = b iN;
}
System.out.println(iN);
}
Комментарии:
1. Во-первых, пожалуйста, отформатируйте свой код. Во-вторых, это для домашнего задания, поэтому, пожалуйста, удалите любой код из вашего ответа и объясните на простом английском языке. StackOverflow — это не то место, куда могут приходить студенты колледжей / старших классов и заставлять людей выполнять за них домашние задания.
2. «iN» — это переменная, которая должна сохранять значение из последнего вычисления. Просто добавил эту строку «iN = // независимо от вычисления», и ваш код работает
3. Честно говоря, вы не можете перестать быть таким? codeabbey.com/index/task_view/modular-calculator это на codeabbey, и я практикую
4. это не будет работать правильно! потому что вы работаете неправильно, например: ответ 1 2*3 равно 7, но ваша программа вернет 9 в качестве ответа
5. Этот ответ или решение, предписанное AAnwar007, будет работать только в том случае, если вычисления выполняются в порядке, точнее, последовательно. Вам следует изучить постфиксные и инфиксные обозначения, но, насколько известно Codeabbey, мой правильный ответ. Приветствия