편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2019.11.06

    for문 제발 도와주세요


    자바입니다. 로또번호 어플을 간단히 만드려고합니다.

    스피너 수에 맞춰 배열을 돌리는 for문에서 log를 찍으면 배열이 3개, 4개 등등 나오는데 실제 출력은 제일 제일 마지막 한개의 배열만 됩니다.

    제발 도와주세요.

    package com.example.lotto;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Spinner;
    import java.util.Arrays;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity extends Activity implements View.OnClickListener {
    
        private final static String TAG = "[JYIM]";
        private Spinner mCountSpinner;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.d(TAG, "onCreate");
            initializeUI();
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            Log.d(TAG, "onStart");
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            Log.d(TAG, "onResume");
        }
    
        @Override
        protected void onStop() {
            super.onStop();
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
    
        private void initializeUI() {
            mCountSpinner = findViewById(R.id.spinner);
            Button mGetNumberButton = findViewById(R.id.btn_num);
            mGetNumberButton.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View view) {
            //lotto();
            makeLottoNumber();
        }
    
        private void makeLottoNumber() {
            EditText numberText1 = findViewById(R.id.number1);
            EditText numberText2 = findViewById(R.id.number2);
            EditText numberText3 = findViewById(R.id.number3);
            EditText numberText4 = findViewById(R.id.number4);
            EditText numberText5 = findViewById(R.id.number5);
            EditText numberText6 = findViewById(R.id.number6);
    
            int lottoCount = Integer.parseInt((String) mCountSpinner.getSelectedItem());
            String[] inputNumber = new String[]{numberText1.getText() + "", numberText2.getText() + "", numberText3.getText() + "", numberText4.getText() + "", numberText5.getText() + "", numberText6.getText() + ""};
            String[] resultNumber = new String[6];
    
            for (int i = 0; i < lottoCount; i++) {//10. 1~5번을 스피터에서 선택된 객수만큼 반복한다.
                for (int j = 0; j < inputNumber.length; j++) {//1. 6개의 입력칸에 숫자가 있는지 확인.
                    //2. 각칸에 숫자의 존재 여부를 판단한다.
                    // 2.1 있으면 배열안에 숫자를 저장한다.
                    // 2.2 없으면 랜덤숫자를 생성하여 배열안에 숫자를 저장한다.
                    resultNumber[j] = inputNumber[j].equals("") ? getRandomNumber() : inputNumber[j];//삼항연산
                }
                // 3.2 중복이 없으면, 4로이동
                //4. 배열을 오름차순으로 정렬한다.
                if (hasDuplicateNumber(resultNumber)) {//3. 배열에 저장된 숫자중 중복이 있는지 확인한다.
                    // 3.1 중복이 있으면, 1번으로 이동한다.
                    //TODO: implement;
                    i--;
    
                } else {
                    printResult(resultNumber);
                }
            }
        }
    
        private void printResult(String[] resultNumber) {
            TextView lottonumber1 = findViewById(R.id.lotto1);
            int[] result = new int[resultNumber.length];
            for (int i = 0; i < resultNumber.length; i++) {
                try {
                    result[i] = Integer.parseInt(resultNumber[i]);
                } catch (NumberFormatException e) {
                    result[i] = 0;
                }
            }
    
            Arrays.sort(result);
            StringBuilder sb = new StringBuilder();
    
                sb.append("{");
                for (int s : result) {
                    sb.append(" ").append(s).append(" ");
                }
                sb.append("}");
                lottonumber1.setText(sb.toString());
                sb.append("\n");
                Log.e(TAG, sb.toString());
            }
    
        private boolean hasDuplicateNumber(String[] resultNumber) {
            //TODO: implement
            for (int i = 0; i < resultNumber.length; i++) {
                for (int j = 0; j < i; j++) {
                    if (resultNumber[i].equals(resultNumber[j])) {
                        return true;
                    }
                }
            }
            return false;
        }
    
        private String getRandomNumber() {
            //TODO: implement 랜덤함수
            int result = (int) (Math.random() * 45 + 1);
            return String.valueOf(result);
        }
    
    }
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2019.11.05

    for문 제발 도와주세요


    자바입니다. 로또번호 어플을 간단히 만드려고합니다. 스피너 수에 맞춰 배열을 돌리는 for문에서 log를 찍으면 배열이 3개, 4개 등등 나오는데 실제 출력은 제일 제일 마지막 한개의 배열만 됩니다 제발 도와주세요ㅠㅠ

    package com.example.lotto;

    import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.Spinner; import java.util.Arrays; import android.widget.Button; import android.widget.TextView;

    public class MainActivity extends Activity implements View.OnClickListener {

    private final static String TAG = "[JYIM]";
    private Spinner mCountSpinner;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate");
        initializeUI();
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart");
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume");
    }
    
    @Override
    protected void onStop() {
        super.onStop();
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    
    private void initializeUI() {
        mCountSpinner = findViewById(R.id.spinner);
        Button mGetNumberButton = findViewById(R.id.btn_num);
        mGetNumberButton.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View view) {
        //lotto();
        makeLottoNumber();
    }
    
    private void makeLottoNumber() {
        EditText numberText1 = findViewById(R.id.number1);
        EditText numberText2 = findViewById(R.id.number2);
        EditText numberText3 = findViewById(R.id.number3);
        EditText numberText4 = findViewById(R.id.number4);
        EditText numberText5 = findViewById(R.id.number5);
        EditText numberText6 = findViewById(R.id.number6);
    
        int lottoCount = Integer.parseInt((String) mCountSpinner.getSelectedItem());
        String[] inputNumber = new String[]{numberText1.getText() + "", numberText2.getText() + "", numberText3.getText() + "", numberText4.getText() + "", numberText5.getText() + "", numberText6.getText() + ""};
        String[] resultNumber = new String[6];
    
        for (int i = 0; i < lottoCount; i++) {//10. 1~5번을 스피터에서 선택된 객수만큼 반복한다.
            for (int j = 0; j < inputNumber.length; j++) {//1. 6개의 입력칸에 숫자가 있는지 확인.
                //2. 각칸에 숫자의 존재 여부를 판단한다.
                // 2.1 있으면 배열안에 숫자를 저장한다.
                // 2.2 없으면 랜덤숫자를 생성하여 배열안에 숫자를 저장한다.
                resultNumber[j] = inputNumber[j].equals("") ? getRandomNumber() : inputNumber[j];//삼항연산
            }
            // 3.2 중복이 없으면, 4로이동
            //4. 배열을 오름차순으로 정렬한다.
            if (hasDuplicateNumber(resultNumber)) {//3. 배열에 저장된 숫자중 중복이 있는지 확인한다.
                // 3.1 중복이 있으면, 1번으로 이동한다.
                //TODO: implement;
                i--;
    
            } else {
                printResult(resultNumber);
            }
        }
    }
    
    private void printResult(String[] resultNumber) {
        TextView lottonumber1 = findViewById(R.id.lotto1);
        int[] result = new int[resultNumber.length];
        for (int i = 0; i < resultNumber.length; i++) {
            try {
                result[i] = Integer.parseInt(resultNumber[i]);
            } catch (NumberFormatException e) {
                result[i] = 0;
            }
        }
    
        Arrays.sort(result);
        StringBuilder sb = new StringBuilder();
    
            sb.append("{");
            for (int s : result) {
                sb.append(" ").append(s).append(" ");
            }
            sb.append("}");
            lottonumber1.setText(sb.toString());
            sb.append("\n");
            Log.e(TAG, sb.toString());
        }
    
    private boolean hasDuplicateNumber(String[] resultNumber) {
        //TODO: implement
        for (int i = 0; i < resultNumber.length; i++) {
            for (int j = 0; j < i; j++) {
                if (resultNumber[i].equals(resultNumber[j])) {
                    return true;
                }
            }
        }
        return false;
    }
    
    private String getRandomNumber() {
        //TODO: implement 랜덤함수
        int result = (int) (Math.random() * 45 + 1);
        return String.valueOf(result);
    }
    

    }