Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串数组以及如何循环它们_Java_Arrays_Control Flow - Fatal编程技术网

Java 字符串数组以及如何循环它们

Java 字符串数组以及如何循环它们,java,arrays,control-flow,Java,Arrays,Control Flow,我想知道是否有可能为我要在代码中计算的字符串数组创建一个循环。我想一次做多个二进制数。到目前为止,我已经正确地工作了,但是我不知道如何让它一次计算多个二进制数。多谢各位 package twoComplement; public class bintodec { public static void main (String[] args)throws java.io.IOException { int number, digit1, digit2, digit3

我想知道是否有可能为我要在代码中计算的字符串数组创建一个循环。我想一次做多个二进制数。到目前为止,我已经正确地工作了,但是我不知道如何让它一次计算多个二进制数。多谢各位

 package twoComplement;

public class bintodec {

public static void main (String[] args)throws java.io.IOException {

int number,
    digit1,
    digit2,
    digit3,
    digit4,
    digit5,
    digit6,
    digit7,
    digit8,
    result;

String num = "11100111";

number = Integer.parseInt(num);

digit1 = ((number % 100000000) - (number % 10000000 % 10000000)) / 10000000;
digit2 = ((number % 10000000) - (number % 10000000 % 1000000)) / 1000000;
digit3 = ((number % 1000000) - (number % 1000000 % 100000)) / 100000;
digit4 = ((number % 100000) - (number % 100000 % 10000)) / 10000;
digit5 = ((number % 10000) - (number % 10000 % 1000)) / 1000;
digit6 = ((number % 1000) - (number % 1000 % 100)) / 100;
digit7 = ((number % 100) - (number % 100 % 10)) / 10;
digit8 = (number % 10);

result = (digit1 * -128) + (digit2 * 64) + (digit3 * 32) + (digit4 * 16) + (digit5 * 8) + (digit6 * 4) + (digit7 * 2) + (digit8 * 1);

System.out.println ( "Binary number: " + num + "\nDecimal Number: " + result);
System.out.println();
System.exit( 0 );

}
}

是的,这就是循环的目的;-)高级for循环是遍历数组的最佳方式。您还可以遍历集合(即:
ArrayList
),这使添加新项变得更容易

String[] numbersToEvaluate = new String[]{"11100111", "100101", "10101101"};

for (String num: numbersToEvaluate)
{
    number = Integer.parseInt(num);

    digit1 = ((number % 100000000) - (number % 10000000 % 10000000)) / 10000000;
    digit2 = ((number % 10000000) - (number % 10000000 % 1000000)) / 1000000;
    digit3 = ((number % 1000000) - (number % 1000000 % 100000)) / 100000;
    digit4 = ((number % 100000) - (number % 100000 % 10000)) / 10000;
    digit5 = ((number % 10000) - (number % 10000 % 1000)) / 1000;
    digit6 = ((number % 1000) - (number % 1000 % 100)) / 100;
    digit7 = ((number % 100) - (number % 100 % 10)) / 10;
    digit8 = (number % 10);

    result = (digit1 * -128) + (digit2 * 64) + (digit3 * 32) + (digit4 * 16) + (digit5 * 8) + (digit6 * 4) + (digit7 * 2) + (digit8 * 1);

    System.out.println ( "Binary number: " + num + "\nDecimal Number: " + result);
}

是的,这就是循环的目的;-)高级for循环是遍历数组的最佳方式。您还可以遍历集合(即:
ArrayList
),这使添加新项变得更容易

String[] numbersToEvaluate = new String[]{"11100111", "100101", "10101101"};

for (String num: numbersToEvaluate)
{
    number = Integer.parseInt(num);

    digit1 = ((number % 100000000) - (number % 10000000 % 10000000)) / 10000000;
    digit2 = ((number % 10000000) - (number % 10000000 % 1000000)) / 1000000;
    digit3 = ((number % 1000000) - (number % 1000000 % 100000)) / 100000;
    digit4 = ((number % 100000) - (number % 100000 % 10000)) / 10000;
    digit5 = ((number % 10000) - (number % 10000 % 1000)) / 1000;
    digit6 = ((number % 1000) - (number % 1000 % 100)) / 100;
    digit7 = ((number % 100) - (number % 100 % 10)) / 10;
    digit8 = (number % 10);

    result = (digit1 * -128) + (digit2 * 64) + (digit3 * 32) + (digit4 * 16) + (digit5 * 8) + (digit6 * 4) + (digit7 * 2) + (digit8 * 1);

    System.out.println ( "Binary number: " + num + "\nDecimal Number: " + result);
}

这是定义字符串数组的方法:

int n = 10;
String[] arr = new String[n]; 
下面是如何迭代数组:

for (int i = 0; i < n; i++) {
    arr[i] = "element number " + i;
}

这是定义字符串数组的方法:

int n = 10;
String[] arr = new String[n]; 
下面是如何迭代数组:

for (int i = 0; i < n; i++) {
    arr[i] = "element number " + i;
}

如果您至少运行Java5,则可以使用构造在任意数组或集合上循环

String[] nums = //init
for (String num:nums) {
    // Do work.
}
但是,如果您使用的是Java1.4或更早版本,或者您关心数组的索引,则需要使用传统的for循环

String[] nums = //init
for (int i = 0; i<nums.length; i++) {
    String num = nums[i];
    // Do work.
}
String[]nums=//init

对于(inti=0;i,如果您至少运行Java5,则可以使用构造在任意数组或集合上循环

String[] nums = //init
for (String num:nums) {
    // Do work.
}
但是,如果您使用的是Java1.4或更早版本,或者您关心数组的索引,则需要使用传统的for循环

String[] nums = //init
for (int i = 0; i<nums.length; i++) {
    String num = nums[i];
    // Do work.
}
String[]nums=//init

对于(inti=0;i你的意思是什么

for (String num : "11100111,1010,11111,110101010101010101011101010101010101010101".split(",")) {
    long result = Long.parseLong(num, 2);
    System.out.println("Binary number: " + num + ", Decimal Number: " + result);
}
印刷品

Binary number: 11100111, Decimal Number: 231
Binary number: 1010, Decimal Number: 10
Binary number: 11111, Decimal Number: 31
Binary number: 110101010101010101011101010101010101010101, Decimal Number: 3665040856405

你是说像这样的东西吗

for (String num : "11100111,1010,11111,110101010101010101011101010101010101010101".split(",")) {
    long result = Long.parseLong(num, 2);
    System.out.println("Binary number: " + num + ", Decimal Number: " + result);
}
印刷品

Binary number: 11100111, Decimal Number: 231
Binary number: 1010, Decimal Number: 10
Binary number: 11111, Decimal Number: 31
Binary number: 110101010101010101011101010101010101010101, Decimal Number: 3665040856405

是的,那很容易

String[] array = {"first", "second", "third"};
for (String element : array) {
   // do whatever
}

作为一个旁白,但是,您可能希望为更清晰的代码考虑以下内容:

String num = "1000";
int digit1 = Character.digit(num.charAt(0), 2);
// if you are only expecting a binary number then the second argument (2)
// tells the digit method to throw an error if it gets a digit other than 0 or 1
...
如果这是为了学校练习或类似的目的,您可能希望针对内置整数解析器测试代码

int numFromBinaryString = Integer.parseInt(numberString, 2);
// again, here the second argument tells parseInt to interpret numberString as
// binary string

是的,那很容易

String[] array = {"first", "second", "third"};
for (String element : array) {
   // do whatever
}

作为一个旁白,但是,您可能希望为更清晰的代码考虑以下内容:

String num = "1000";
int digit1 = Character.digit(num.charAt(0), 2);
// if you are only expecting a binary number then the second argument (2)
// tells the digit method to throw an error if it gets a digit other than 0 or 1
...
如果这是为了学校练习或类似的目的,您可能希望针对内置整数解析器测试代码

int numFromBinaryString = Integer.parseInt(numberString, 2);
// again, here the second argument tells parseInt to interpret numberString as
// binary string

非常好,非常感谢。如果可能,我会标记为答案。非常好,非常感谢。如果可能,我会标记为答案。内置整数.parseInt()转换几乎是欺骗:)@ggrigery除非这是
[家庭作业]
;)内置整数。parseInt()转换几乎是作弊:)@ggrigery除非这是
[家庭作业]
;)否则它不应该是个问题