2013-10-27 4 views
2

Я пытаюсь назначить переменные динамически, но я не знаю, как это сделать.Динамические переменные

Что моя программа должна делать:

«Напишите программу, пользователь мог ввести три длины сторон и определить, является ли фигура треугольник или нет.»

Это то, что я до сих пор:

package triangle; 
import javax.swing.JOptionPane; 
public class Triangle { 
    public static void main(String[] args) { 
     String x = JOptionPane.showInputDialog("Please enter the side lengths of a  triangle with each side \nseparated with a ',' and without spaces. (eg. 1,2,3)"); 
     x += ","; 
     int y = -1, a = 0; 
     double z; 
     for(int i = 0; i < x.length(); i++) 
     { 
      if(x.charAt(i) == ',') 
      { 
       z = Double.parseDouble(x.substring((y + 1), i)); 
       y = i; 
       a += z; 
      } 
     } 
    } 
} 

То, что я хотел бы сделать было бы иметь это в, если заявление:

int a++; 
z(a) = Double.parseDouble(x.substring((y + 1), i)); 

Но, как я выяснил, это не сработает, и мне нужен какой-то массив. К сожалению, мой онлайн-класс еще не запускал массивы, и я еще не понял их в своем собственном обучении.

Я хотел бы сделать 3 переменные (z1, z2, z3) и назначить целое число каждому из операторов if.

Редактировать: Вот несколько пересмотренный код, который теперь работает так, как я хотел сейчас. Надеюсь, это поможет кому-то еще в будущем!

package triangle; 
import javax.swing.JOptionPane; 
public class Triangle { 
    public static void main(String[] args) { 
     String x = JOptionPane.showInputDialog("Please enter the side lengths of a  triangle with each side \nseparated with a ',' and without spaces. (eg. 1,2,3)"); 
     x += ","; 
     int y = -1, a = 0; 
     Double[] z = new Double[3]; 
     for(int i = 0; i < x.length(); i++) 
     { 
      if(x.charAt(i) == ',') 
      { 
       z[a] = Double.parseDouble(x.substring((y + 1), i)); 
       y = i; 
       a++; 
      } 
     } 
     //Some test code to see if it was working 
     System.out.println(z[0]); 
     System.out.println(z[1]); 
     System.out.println(z[2]); 
    } 
} 
+2

ОК, но ... что вы должны делать? Что вы хотите, чтобы этот код выполнял? –

+0

Это школьное задание. Я просто хочу немного покончить с вопросом. «Напишите программу, чтобы пользователь вводил три длины сторон и определял, является ли фигура треугольником или нет». – lukeb28

ответ

1

Вам не нужно использовать массивы, особенно если вы их не познакомили. Вы можете просто использовать Scanner класс, и сделать что-то похожее на

Scanner in = new Scanner(System.in); // this will read from the standard system input 
System.out.println("Please enter three lengths of sides: "); 
int a = in.nextInt(); 
int b = in.nextInt(); 
int c = in.nextInt(); 

И написать некоторую логику (я предполагаю, что это точка вашего домашнего задания) проверки, если эта цифра представляет собой треугольник.

В случае, если вы хотели бы использовать массивы, вы могли бы объявить один, выполнив:

int[] sidesLenghtsArray = new int[3]; 

И тогда вместо того, отсылая к трем различным int переменных, можно просто обратиться к своим элементам массива:

int[0] = in.nextInt(); 
int[1] = in.nextInt(); 
int[2] = in.nextInt(); 

Просто помните - число в скобках - это количество элементов, которое будет иметь ваш массив, но ссылаясь на эти элементы, вы начинаете считать с 0. Вот почему мы начинаем с int[0] (1-й элемент) и заканчиваем int[2] (3-й элемент).

+0

Я бы использовал сканер и три разных входа, но я хочу использовать цикл только для некоторого дополнительного вызова и показать своего учителя. Я готов к более продвинутым классам (например, массивы). Я вернусь к вам, как только попытаюсь реализовать массив. Спасибо за быстрый ответ! – lukeb28

+0

@ lukeb28 Если я могу дать вам совет - если вы хотите показать своему учителю, что вы готовы * для более продвинутых классов, сначала прочитайте какую-нибудь книгу или учебник (я уверен, что у вас есть некоторые материалы для изучения от) на массивах (или что бы вы ни хотели узнать), вместо того, чтобы спрашивать * до *, вы действительно искали какую-то информацию. Надеюсь, что это поможет. Если у вас появятся еще вопросы, не стесняйтесь спрашивать! –

+0

Я смотрю летние курсы vswe на java. http://www.youtube.com/watch?v=RtA9xz6W5to&list=PL6lD77ZPqAf3KtS0T8LZ-JTdjogDKas8N Основная причина, по которой мне нужно было спросить, - это то, что он пропустил массивы с одним измерением и направился к двумерным массивам, что немного смутило меня. Я только что закончил реализацию массивов в своем коде, и он делает то, что я хотел! Спасибо за помощь Eel Lee! Я думаю, что теперь я понимаю массивы, которые я применил в своем коде. – lukeb28

0

Java не поддерживает назначение кортежа как

def (a,b,c) = "1,2,3".split(",") 

Это можно сделать в Java 8 со следующим кодом:

int[] abc = Arrays.stream("1,2,3".split(",")).mapToInt(Integer::parseInt).toArray(); 

Здесь a бы abc[0], b является abc[1].

Подобный код в Java 7 может быть таким:

String[] abc = "1,2,3".split(","); 

int a = Integer.parseInt(a[0]); 
int b = Integer.parseInt(a[1]); 
int c = Integer.parseInt(a[2]); 
+0

Вы уверены, что это ответ на этот вопрос? –

+0

Да, я совершенно уверен. @ likeb28 было любопытно, и я дал варианты. Это может быть новый API, но это легко понять. Зачем? –

+0

Спасибо за информацию, но я в настоящее время работает на java 7. Я буду помнить об этом, потому что, когда я обновляю хотя! – lukeb28

0

Сама основная идея заключается в том, что в каждом треугольнике при добавлении длины двух сторон, в результате чего длина должна быть больше, чем длина оставшегося стороны. Скажем, a, b, c - стороны треугольника.

public static void main(String[] args){ 
    int a=3, b=4, c=5; 

    if(a+b > c && a+c>b && c+b>a){ 
     System.out.println("This is a valid trianlge"); 
    } 
    else{ 
     System.out.println("This is not a valid triangle"); 
    } 
} 

убедитесь, что вы замените значения a, b и c значениями, которые вы получаете от пользовательского ввода.

+0

Спасибо за помощь, но это было мое задание, а не мой вопрос. В чем смысл задания, если кто-то сделает это за вас? В любом случае то, что я придумал, более или менее то же, что и вы предложили. Единственное отличие заключалось в том, что я использовал массив и делал условия, в которых он не был бы треугольником. – lukeb28

+0

Добро пожаловать. Я не предлагал полного решения, поскольку вам приходилось добавлять код, чтобы он работал так, как задавали вопросы. Я рад, что ты все-таки сработал. – MZ4Code

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