2014-09-30 2 views
0

Есть ли способ использовать один для цикла с несколькими целыми числами? В настоящее время я написал код для int num0. Но есть ли способ оставить остальную часть num1, num2, num3 в том же коде? Причина, почему я прошу об этом здесь, состоит в том, что я не настолько опытен как программист, и мне интересно, знаете ли вы, знаете ли вы, что есть решение. (Пардон мой плохой грамматики)Как сделать 1 для цикла для нескольких целых чисел?

public void exercise1c() { 
     int num0, num1, num2, num3; 

     num0 = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
     num1 = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
     num2 = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
     num3 = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 

     for (int i = 0; i <= num0; i++) { 
     if (num0 <= 0) { 
      System.out.println("Number "+ num0 + " is negative."); 
      break; 
     } 
     } 
     if (num0 >= 0) { 
     System.out.println(num0 + " is a integer."); 
     } 
     if (num0 == 0){ 
     System.out.println(num0 + " is zero."); 
     } 
    } 
+0

Что такое purpo se этого цикла? Эта токовая петля ничего не делает. Пропущенный код? – Tom

+0

Что вы имеете в виду с одной петлей с несколькими целыми числами? Некоторые aclaration может быть хорошо ... Вы имеете в виду получить что-то вроде: 1 1 1 1, ... 1 1 2 1, ... п п п п ??? –

+0

Я думаю, вам нужно поставить 'if (num0> = 0)' и 'if (num0 == 0)' блоки внутри внутри цикла for. – arin1405

ответ

2

Добавить num0, num1, num2, num3 в к List или array, тогда вы можете использовать одинарные for петлю

Eg: с int[]

int[] num = new int[4]; 
num[0] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
num[1] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
num[2] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
num[3] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 

for (int i = 0; i < num.length; i++) { 
    if (num[i] < 0) { 
     System.out.println("Number " + num[i] + " is negative."); 
     break; 
    } 
    if (num[i] > 0) { 
     System.out.println(num[i] + " is a integer."); 
    } 
    if (num[i] == 0) { 
     System.out.println(num[i] + " is zero."); 
    } 
} 

Как сделать это с List

Eg:

List<Integer> numList = new ArrayList<>(); 
    numList.add(Integer.parseInt(JOptionPane.showInputDialog("Write a number."))); 
    numList.add(Integer.parseInt(JOptionPane.showInputDialog("Write a number."))); 
    numList.add(Integer.parseInt(JOptionPane.showInputDialog("Write a number."))); 
    numList.add(Integer.parseInt(JOptionPane.showInputDialog("Write a number."))); 

    for (Integer i :numList) { 
     if (i < 0) { 
      System.out.println("Number " + i + " is negative."); 
      break; 
     } 
     if (i > 0) { 
      System.out.println(i + " is a integer."); 
     } 
     if (i == 0) { 
      System.out.println(i + " is zero."); 
     } 
    } 
+0

'Array' - это не то же самое, что массив (или' List'). массив не является «объектом» в java. Вы имеете в виду класс «Array», но затем вы пишете код с использованием массивов int, вы собираетесь заставить его делать больше ошибок, чем сейчас. –

1

Используйте array:

int[] num = new int[4]; 

num[0] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
num[1] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
num[2] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
num[3] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 

for(int i = 0; i<num.length; i++) { 
    int currentInteger = num[i]; 

    //other code here... 
} 
1

Во-первых, те объекты Num # не являются массивами, но примитивы, если бы они были целыми. Если три массива имеют одинаковую длину, ответ да!

for (int i =0; i < numArray.length; i++) 

Но если вы ищете быстрый способ итерации в массиве

for (int i : numArray) 
    System.out.println("The number is: " + i); 
0

вы можете сделать так:

int num[]=new int[4]; 

    for(int i=0;i<4;i++){ 
     num[i] = Integer.parseInt(JOptionPane.showInputDialog("Write a number.")); 
    } 

    // Do something 
0

Возможно, вы имели в виду это:

static final int N = 4; // <-- the number of integers you have. 
public void exercise1c() { 
    int num[] = new int [4]; 
    for (i = 0; i < N; i++) { 
     num[i] = Integer.ParseInt(JOptionPane.showInputDialog("Write a number.")); 
     // you need here some means to get the number into num[i]. 
    } /* for */ 
    for (i = 0; i < N; i++) { 
     if (num[i] < 0) { // < 0 for negative number. 0 is not negative. 
      System.out.println("Number " + num[i] + " is negative."); 
      // break; // don't know what you pretend here. 
     } else if (num[i] > 0) { 
      System.out.println("Number " + num[i] + " is positive."); 
     } else { 
      System.out.println("Number " + num[i] + " is zero."); 
     } /* if */ 
    } /* for */ 
} /* exercise1c() */ 
+0

Что должно произойти в вашем первом цикле? Вы не храните введенный номер в любой переменной. – Tom

+0

Я знаю ... см. Комментарии. С уровнем java он, кажется, имеет, лучше сделать консольный ввод, прежде чем пытаться сделать это с помощью классов диалога. –

+0

Он уже правильно использовал диалог, но написал пользовательский ввод в переменной 'int' вместо массива. И можете ли вы сказать мне, что «JOptionPane.showInputDialog (« Напиши номер »). Предполагается, что getText()' должен делать? В 'String' нет метода' getText() '. – Tom

Смежные вопросы