Java 我如何正确使用“a”;ForEach“;环
我在练习Java,这次我在制作一个程序,Java 我如何正确使用“a”;ForEach“;环,java,loops,foreach,Java,Loops,Foreach,我在练习Java,这次我在制作一个程序, 1.将2个二进制数转换为十进制数 2.计算这两个十进制数之和 3.以二进制和十进制显示结果 我知道我在代码中没有采用有效的方法,但这是故意的。 (这样我就可以用一个项目进行更多练习) 但是我的代码中有一个问题,当它要从 二进制到十进制 它始终将第一个数字显示为“3”,第二个数字显示为“3” 作为“2”。 有人能告诉我我做错了什么吗?提前感谢。 (我已经试着在互联网上搜索答案,但找不到。 对不起,如果我把你的时间浪费在一个愚蠢的错误上。) packageb
1.将2个二进制数转换为十进制数
2.计算这两个十进制数之和
3.以二进制和十进制显示结果
我知道我在代码中没有采用有效的方法,但这是故意的。
(这样我就可以用一个项目进行更多练习)
但是我的代码中有一个问题,当它要从 二进制到十进制
它始终将第一个数字显示为“3”,第二个数字显示为“3” 作为“2”。
有人能告诉我我做错了什么吗?提前感谢。
(我已经试着在互联网上搜索答案,但找不到。
对不起,如果我把你的时间浪费在一个愚蠢的错误上。)
packagebinary2decimal2binary;
导入java.util.Scanner;
导入java.util.ArrayList;
公共类二进制2细分2二进制{
私有静态长二进制1;
私有静态长二进制2;
private final static ArrayList powerso2=新的ArrayList();
private final static ArrayList SEPARATED2=新的ArrayList();
私有静态int temp1=0;
私有静态int result1=0;
私有静态int temp2=0;
私有静态int result2=0;
private final static ArrayList SEPARATED1=新的ArrayList();
静态void二进制文件2ArrayList(长二进制文件1,长二进制文件2){
String separating1=String.valueOf(binary1);
System.out.println(“调试器1:+separating1”);
for(int i=0;i
编辑:我添加了一些代码来检查我的循环发生了什么,
发生了一些奇怪的事情。输入:
101
10
输出:
调试器1:101
调试器2:10
调试器3:1
调试器3:1
调试器3:1
调试器4:1
调试器4:1
转换的第一个数字:3
转换的第二个数字:2
即使我添加了
i+=1;和
k+=1;在循环中,值从不小于br>
上升。请帮帮我。实际上这里有很多东西需要改进
- 从Java1.5开始,就有了。尽可能使用它们(即
,而不是原始类型ArrayList
)ArrayList
- 定义变量时,不要使用接口而不是实现(即
而不是List=new ArrayList();
)ArrayList List=new ArrayList();
- 不要过度使用
关键字。利用OOP概念,如类和封装。从长远来看,它可以防止你产生不必要的副作用static
- 尝试将
和private
添加到尽可能多的字段中。它防止重新分配和其他类在与这些值无关时访问这些值final
- 对于循环,您需要改进:
已经为您提供了该Iterable中的元素。在该循环中调用for(Type element:Iterable)
没有任何意义(特别是因为separated1.get(i)
总是i
),因为单个元素已经可以通过0
元素访问了
....
private final List<Integer> separated2 = new ArrayList<Integer>();
....
for(Integer intValue : separated2) {
// your logic using intValue
....
}
private final List<Integer> separated2 = new ArrayList<Integer>();
....
for(int i = 0; i < separated2.size(); i++) {
Integer intValue = separated2.get(i);
// your logic using intValue
....
}
要将二进制字符串转换为整数,请使用:
Integer.parseInt("binaryString",2);
这是工作代码
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("Input first binary number.");
String firstBinary = scanner.next("[0-1]+");
System.out.println("Input second binary number.");
String secondBinary = scanner.next("[0-1]+");
int int1 = convertToInt(firstBinary);
int int2 = convertToInt(secondBinary);
int sum = calculateSum(int1, int2);
display(firstBinary, secondBinary, int1, int2);
System.out.println("sum is " + sum);
}
public static void display(String binary1, String binary2, int arg1, int arg2) {
System.out.printf("%1s10 = %2d5\n%3s10 = %4d5", binary1, arg1, binary2, arg2);
}
public static int convertToInt(String binary) {
return Integer.parseInt(binary, 2);
}
public static int calculateSum(int arg1, int arg2) {
return arg1 + arg2;
}
此程序首先要求您输入两个二进制文件。它将它们转换为整数并计算它们的和。最后,它将结果显示到控制台。Integer已经是一个预定义的类,因此它是一个无效的变量名。@CardinalSystem这不是真的。试试看。Java将允许您声明名为
Integer
的变量。这是愚蠢的O.Opowerso2
,separated1
,separated2
应该声明为ArrayList
,而不是ArrayList
。如果只是将它们设置为ArrayList
,那么编译器只知道列表中的元素是对象
。它不知道它们是整数
@ajb哦,我不知道。我认为当我编写“=new Arraylist”时,编译器会知道它是一个整数Arraylist。谢谢你的建议!谢谢你的建议。但我还需要知道一件事。你能告诉我“intValue”是什么吗?它只是一个刚刚初始化的int变量吗
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("Input first binary number.");
String firstBinary = scanner.next("[0-1]+");
System.out.println("Input second binary number.");
String secondBinary = scanner.next("[0-1]+");
int int1 = convertToInt(firstBinary);
int int2 = convertToInt(secondBinary);
int sum = calculateSum(int1, int2);
display(firstBinary, secondBinary, int1, int2);
System.out.println("sum is " + sum);
}
public static void display(String binary1, String binary2, int arg1, int arg2) {
System.out.printf("%1s10 = %2d5\n%3s10 = %4d5", binary1, arg1, binary2, arg2);
}
public static int convertToInt(String binary) {
return Integer.parseInt(binary, 2);
}
public static int calculateSum(int arg1, int arg2) {
return arg1 + arg2;
}