Могу ли я возвращать различную информацию из цикла for в новую переменную каждый раз, когда цикл повторяется? - PullRequest
1 голос
/ 17 января 2012

У меня есть цикл for, который пересекает String, каждый раз вытаскивает 2 символа и присваивает их переменной.Сегмент кода, который я написал ниже:

//parse strings to integers
    public int convertStringToInt(String stringOfDigits)
    {
        int number = 0;    
        int total = 0;
        String subData = "";

        for(int n = 0; n < stringOfDigits.length() ; n+=2) //For loop to pick out 2 digit sets of numbers from a string literal
        {
            subData = stringOfDigits.substring(n, n+2); //pulls a 2 digit substring and assigns it to a variable
            number = Integer.parseInt(subData); //converts the substring to an integer
        }
    }

Мне нужно каким-то образом вернуть первые два символа в переменную (например, var1), следующие два символа в другую переменную (var2) искоро.Затем мне нужно вернуть все это, чтобы я мог принести его в свой основной модуль.

Любая помощь будет очень признательна!

Редактировать:

Это вся моя программа.Ответы, которые я получал, были довольно сложными для того, что я думаю, должно быть.Возможно, более простое решение лежит где-то еще.Эта программа распечатывает гистограмму, показывающую, сколько пользователей используют каждую операционную систему (linux, mac, windows), которую я знаю.String содержит эти числа, и мне нужно ввести эти две пары цифр в метод drawBar(), чтобы он отображал планку с таким количеством пользователей.

/**
 * The purpose of this program is to draw a bar graph using turtle graphics
 * and object oriented programming techniques based on information from a survey on
 * Operating System use.
 * 
 * @author Andrew Hauser (Shibumi) 
 * @version 1/16/12
 */
import java.awt.*; //imports the awt module
class Survey //Declares the Survey class
{
    //Draws a line (or rectangle) from the first set of coordinates to the second set of coordinates.
    public static void drawLine(Turtle myrtle, Color color, int penWidth, int x1, int y1, int x2, int y2)
    {
        myrtle.hide();
        myrtle.penUp();
        myrtle.setPenColor(color);
        myrtle.setPenWidth(penWidth);
        myrtle.moveTo(x1, y1);
        myrtle.penDown();
        myrtle.moveTo(x2, y2);
    }//end of method

    //Draws the box that the graph is contained in
    public static void drawBox(Turtle myrtle, Color color) 
    {
        myrtle.hide();
        myrtle.penUp();
        myrtle.setPenColor(color);
        myrtle.setPenWidth(1);
        myrtle.moveTo(100, 10);
        myrtle.penDown();
        myrtle.moveTo(400, 10);
        myrtle.moveTo(400, 250);
        myrtle.moveTo(100, 250);
        myrtle.moveTo(100, 10);
        myrtle.penUp();    
    }

    //Draws the value lines on the outside of the box
    public static void drawBoxLines(Turtle myrtle, Color color)
    {
        myrtle.hide();
        myrtle.penUp();
        myrtle.setPenWidth(1);
        myrtle.moveTo(100, 250);
        for(int nums = 0; nums <=10; nums++)
        {
            myrtle.turnLeft();
            myrtle.penDown();
            myrtle.forward(10);
            myrtle.penUp();
            myrtle.backward(10);
            myrtle.turnRight();
            myrtle.forward(20);
        }
    }


    //Draws a bar for the graph
    public static void drawBar(Turtle myrtle, Color color, int value, int x1, int y1)
    {
        myrtle.hide();
        myrtle.penUp();
        myrtle.setPenColor(color);
        myrtle.setPenWidth(1);
        myrtle.moveTo(x1, y1);
        myrtle.penDown();
        myrtle.forward(value * 10);
        myrtle.turnRight();
        myrtle.forward(10);
        myrtle.turnRight();
        myrtle.forward(value * 10);
        myrtle.penUp();
        myrtle.turnLeft();
        myrtle.turnLeft();
    }

    //parse strings to integers
    public int convertStringToInt(String stringOfDigits)
    {
        int number = 0;    
        int total = 0;
        String subData = "";

        for(int n = 0; n < stringOfDigits.length() ; n+=2) //For loop to pick out 2 digit sets of numbers from a string literal
        {
            subData = stringOfDigits.substring(n, n+2); //pulls a 2 digit substring and assigns it to a variable
            number = Integer.parseInt(subData); //converts the substring to an integer
        }
    }
}

public class SurveyTester //Declares the SurveyTester class
{
    //Executes the code.
    public static void main(String[] args) //Start of main method
    {
        World worldObj = new World(); //Makes a new world
        Turtle myrtle = new Turtle(0, 0, worldObj); //Makes a new Turtle object
        Picture pictureObj = new Picture("Graph_background.png");
        worldObj.setPicture(pictureObj);
        Survey survey = new Survey(); //Makes a new Survey object

        stringData = "031016";

        survey.drawBox(myrtle, Color.BLACK);
        survey.drawBoxLines(myrtle, Color.BLACK); //Draws lines by twos
        survey.drawBar(myrtle, Color.RED, 3, 150, 250); //Bar for linux
        survey.drawBar(myrtle, Color.RED, 10, 240, 250); //Bar for Mac
        survey.drawBar(myrtle, Color.RED, 16, 330, 250); //Bar for windows
    }
}

Справка была бы очень признательна!

PS.Если вы действительно хотите запустить , чтобы увидеть, как это выглядит, вам понадобится библиотека bookClasses Java, которую вы можете получить из моего выпадающего списка здесь: http://db.tt/H8zmyA75

Ответы [ 3 ]

0 голосов
/ 17 января 2012
import java . util . * ;

//parse strings to integers
    public int convertStringToInt(String stringOfDigits)
    {
        int number = 0;    
        int total = 0;
        String subData = "";
        List<Integer> numbers = new ArrayList<>();

        for(int n = 0; n < stringOfDigits.length() ; n+=2) //For loop to pick out 2 digit sets of numbers from a string literal
        {
            subData = stringOfDigits.substring(n, n+2); //pulls a 2 digit substring and assigns it to a variable
            numbers . add ( Integer.parseInt(subData) ) ; //converts the substring to an integer
        }
    }
0 голосов
/ 17 января 2012

Из того, что я понял из вашего вопроса, вы хотите создать несколько переменных в зависимости от размера строки.И что каждый два символа в вашей строке представляют один целое число.Массив может быть описан как список переменных.Так что если у вас есть строка из 10 символов, эти 10 символов представляют 5 целых чисел.Поэтому вам понадобится массив длина 5 (количество переменных в массиве или «ячейках»)

Чтобы создать массив целых чисел:

int[] arrayName = new int[SIZE];

вы также вернете массив и обработаете его как «список» переменных

Например:

public static int [] convertStringToInteger(String toConvert) {

int [] toReturn = new int[toConvert.length()/2];
        //Assuming passed strings are of even length


for (int i = 0, j = 0; i < toConvert.length() || j < toReturn.length; i +=2 , j++) {

    String temp = toConvert.charAt(i) + "" + toConvert.charAt(i+1);

    toReturn [j] = Integer.parseInt(temp);
}


return toReturn;
}

Массивы очень просты в использовании и вы можете понять, что вы можете проверить массивы в руководствах по Javaк оракулу здесь

Надеюсь, это поможет.

0 голосов
/ 17 января 2012

Вот почему были изобретены массивы.Поместите каждую пару символов в

char[][] pairs;

Или, возможно, лучше

ArrayList<char[]> pairs;

, если вы не можете предсказать, сколько их заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...