상세 컨텐츠

본문 제목

[안드로이드]로또번호 생성(TextView, Button,HashSet, ArrayList)

안드로이드

by aries574 2020. 11. 11. 20:21

본문


이번 시간에는 로또번호 생성하는 프로그램을 만들어보겠습니다.

로또번호는 1~45의 숫자중 7개의 숫자를 입력합니다. 

이 숫자를 랜덤으로 가져와서 화면에 뿌려주겠습니다.

예)


1. 화면(activity_main.xml)

하나의 텍스트뷰와 하나의 버튼으로 구성되어있습니다.

버튼은 누르면 랜덤으로 숫자를 생성하고, 텍스트뷰에 숫자를 보여줄 것입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<TextView
android:id="@+id/lottoList"
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="#FAEBFF"
android:textSize="20dp"
android:textStyle="bold"
/>
<Button
android:id="@+id/createNum"
android:layout_width="match_parent"
android:layout_height="80dp"
android:text="로또생성"
android:textStyle="bold"
/>
</LinearLayout>


2. 기능구현(MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashSet;

public class MainActivity extends AppCompatActivity {

private TextView lottoList;

HashSet<String> lottoSet = new HashSet<String>();
ArrayList<String> arrList = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 로또번호 표시될 텍스트뷰
lottoList = findViewById(R.id.lottoList);

//로또생성 버튼
Button createNum = findViewById(R.id.createNum);
createNum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//로또번호 생성뷰 초기화
lottoList.setText("");

while(lottoSet.size() < 7){
int num = (int)(Math.random()*45);
Log.d("Main", String.valueOf(num));
if(num != 0){
lottoSet.add(num+"");
}
}

//set list에 담기
arrList.addAll(lottoSet);

for(int i=0; i < arrList.size(); i++){

//텍스트뷰에 담기
if(i < 5){
lottoList.append(arrList.get(i) + ", ");
}else if(i == 5){
lottoList.append(arrList.get(i) + " ");
}else{
lottoList.append(" \n 보너스번호: " + arrList.get(i));
}
}
//초기화
lottoSet.clear();
arrList.clear();
}
});
}
}

3. 설명

1. 랜덤으로 생성된 숫자가 중복이 되면 안되기 때문에 HashSet을 사용했습니다.

2. 입력된 숫자를 등록된 순서대로 보여주기 위해서 HashSet에 담긴 데이터를 ArrayList에 옮겼습니다.

3. 랜덤으로 숫자를 얻기 위해서 Math.random 메소드를 사용했습니다.

4. 텍스트뷰에 데이터를 넣기 위해서 append()메소드를 사용했습니다.


4. 실행화면



반응형

관련글 더보기

댓글 영역