嗨,我有这个问题,我做一个计算器,你介绍一些东西idk橙色或柠檬的重量,你把1公斤(介绍1)然后你把它的价格可以是idk 5 usd(介绍5)然后我乘以1x5 = 5然后我告诉客户好多少你会支付他说idk 10 usd所以我介绍10和我的计算器做5-10 = 5它在那里我有我的代码的问题那部分变化客户(10个篮子中的5个)重复2次(问我2次为客户支付费用)我试图把0(零)放在行中:vuelto = new float [1]; put给我一个错误我该如何解决?
theres the code
import java.util.Scanner;
public class arreglo1 {
public static void main(String[] args) {
Scanner ingreso = new Scanner(System.in);
Scanner peso = new Scanner(System.in);
Scanner precios = new Scanner(System.in);
Scanner vuelto1 = new Scanner(System.in);
float[] kilo; //definir un arreglo
float[] precio;
float[] vuelto;
kilo = new float[2]; //iniciar un arreglo
precio = new float[2];
vuelto = new float[1];
float Total;
float Vuelto1;
System.out.println("Ingrese el peso del Producto:");
for (int i = 0; i < 2; i = i + 1) {
kilo[i] = peso.nextFloat();
}
System.out.println("\nIngrese precio del Producto:");
for (int j = 0; j < 2; j = j + 1) {
precio[j] = precios.nextFloat();
}
//////Total A Pagar
for (int i = 0; i < 2; i = i + 1) {
Total = ((kilo[0] * precio[0]) + (kilo[1] * precio[1]));
System.out.print("\nTotal a pagar: " + Total);
//////Vuelto para el cliente
System.out.println("\nIngrese monto con el que se va a pagar:");
for (int b = 0; b == 0; b = b + 1) {
vuelto[b] = vuelto1.nextFloat();
Vuelto1 = (float)(Total - vuelto[b]) / -1;
System.out.print("\nVuelto: " + Vuelto1);
}
}
}
}
答案 0 :(得分:0)
最后一个for循环(“veulto”部分)将运行两次,因为它是前一个for循环体的一部分(“Total A Pagar”部分)。 for循环的整个主体在i<2
时执行。
如果你只想要执行一次“veulto”,那么应该添加一个右括号来分隔第一个for循环和第二个循环的主体。
for (int i = 0; i < 2; i = i + 1) {
Total = ((kilo[0] * precio[0]) + (kilo[1] * precio[1]));
System.out.print("\nTotal a pagar: " + Total);}
显然,也应该删除最后一个结束括号以平衡它们: - )
解决问题实际上揭示了另一个问题,因为局部变量Total可能无法初始化,javac强制执行。解决方案是在声明时将其初始化为某个值,可能为0。
float Total = 0.0f;
当你在它时,“veulto”部分不需要处于for循环中,它只执行一次。
答案 1 :(得分:0)
为什么需要这部分代码?
for (int b = 0; b == 0; b = b + 1) {
vuelto[b] = vuelto1.nextFloat();
Vuelto1 = (float)(Total - vuelto[b]) / -1;
System.out.print("\nVuelto: " + Vuelto1);
}
我想,你只想从客户那里读一次价格,所以这就足够了 写
Vuelto1 = Math.abs((float)(Total - vuelto1.nextFloat()))
System.out.print("\nVuelto: " + Vuelto1);
注意: Math.abs()返回数字的绝对值,因此您总是得到一个正数。